Связывание GridView со списком строк - PullRequest
5 голосов
/ 02 февраля 2012

У меня есть список, который я связываю с GridView, поэтому у моего GridView будет только один столбец этих строковых значений. Я хочу иметь правильный заголовок для этого столбца. Пожалуйста, помогите мне. Посмотрите, что я пытался сделать:

<asp:GridView ID="GridView1" runat="server" Width="95%">

<Columns>

<asp:BoundField HeaderText="My List" />

</Columns>

</asp:GridView>

И в коде позади:

List<string> myList = new List<string>();

:

:

// code to populate myList

:

:

GridView1.DataSource = myList;

GridView1.DataBind();

Когда я запускаю этот код, я получаю два столбца в GridView. Первый столбец с текстом заголовка «Мой список» и пустыми строками, тогда как второй столбец с текстом заголовка «Элемент» и строками со значениями myList. Я хочу, чтобы в моем GridView был только один столбец с текстом заголовка «Мой список» и строками со значениями объекта myList.

Спасибо

Ответы [ 8 ]

3 голосов
/ 02 февраля 2012

Или вы можете сделать это так:

Aspx:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="test" HeaderText="Text" />
    </Columns>
</asp:GridView>

Код:

var ls=new List<string>();
ls.Add("Test");
ls.Add("Test2");
gv.DataSource=ls.Select (l =>new{test=l});
1 голос
/ 09 июня 2015

Я полагаю, что следующее даст вам результаты, которые вы ищете:

        <asp:gridview id="MyGridView" runat="server" showheaderwhenempty="true" autogeneratecolumns="false" runat="server">
        <Columns>
            <asp:TemplateField HeaderText="My List">
            <ItemTemplate>
                <asp:Label ID="Column1" runat="server" Text=<%# Container.DataItem %>></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        </Columns>
        </asp:gridview>
1 голос
/ 02 февраля 2012

Добавить AutoGenerateColumns="false", чтобы отключить второй столбец;Я не уверен, как бы вы связали массив строк;поскольку он выводит Item, возможно, добавьте DataField="Item" к определению вашей сетки.Или привяжите к анонимному объекту:

this.gvw.DataSource = mylist.Select(i => new { Data = i });

А затем в привязанном столбце укажите Данные в качестве текстового поля.

Вариант 3 - оставить AutoGenerateColumns="true" (по умолчанию)и удалите свою колонку.

0 голосов
/ 18 декабря 2014

просто используйте Container.DataItem

.cs

List<string> myList = new List<string>();
GridView1.DataSource = myList ;
GridView1.DataBind();

.aspx

    <asp:gridview ID="GridView1" runat="server">
        <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Label ID="nasdc" runat="server" Text=<%# Container.DataItem %>></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        </Columns>

http://forums.asp.net/t/1050997.aspx?How+to+bind+a+GridView+to+a+List+string+

0 голосов
/ 02 февраля 2012

Set Grid AutoGenerateColumns="false"

0 голосов
/ 02 февраля 2012

Попробуйте это:

<asp:GridView ID="GridView1" runat="server">
</asp:GridView>


 List<string> l = new List<string>();
            l.Add("computer");
            l.Add("laptop");
            l.Add("palmtop");

            GridView1.DataSource = l;
            GridView1.DataBind();
            GridView1.HeaderRow.Cells[0].Text = "My List";
0 голосов
/ 02 февраля 2012

Вы можете сделать это программно в событии RowDataBound.

protected void GridView_MyList_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.Header)
            {
              ((Label)e.Row.Cells[1].Controls[0]).Text = "My List";
            }
        }

И ваш GridView элемент управления будет похож на

<asp:GridView ID="GridView_MyList" runat="server" 
Width="800px" OnRowDataBound="GridView_MyList_RowDataBound"></asp:GridView>
0 голосов
/ 02 февраля 2012

метод 1:

сделать свойство автоматической генерации столбцов true

<asp:GridView ID="GridView1" runat="server" Width="95%" autogeneratecolumns = "true">

</asp:GridView>

метод 2:

сделать свойство автоматической генерации столбцов false

<asp:GridView ID="GridView1" runat="server" Width="95%">
    <Columns>
    <asp:BoundField HeaderText="My List" />
    </Columns>
</asp:GridView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...