我有一个List,我绑定到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对象值的行。
由于
答案 0 :(得分:3)
或者你可以这样做:
<强> .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 :(得分:1)
添加AutoGenerateColumns="false"
以禁用第二列;我不确定如何绑定字符串数组;因为它输出Item,所以可以将DataField="Item"
添加到网格定义中。或者,绑定到匿名对象:
this.gvw.DataSource = mylist.Select(i => new { Data = i });
然后在绑定列中,将Data指定为文本字段。
选项3是保留AutoGenerateColumns="true"
(默认值)并删除您的列。
答案 2 :(得分:1)
我相信以下内容会为您提供所需的结果:
<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>
答案 3 :(得分:0)
您可以在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>
答案 4 :(得分:0)
试试这个:
<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";
答案 5 :(得分:0)
设置网格AutoGenerateColumns="false"
答案 6 :(得分:0)
只需使用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+
答案 7 :(得分:-1)
方法1:
make auto generate columns属性为true
<asp:GridView ID="GridView1" runat="server" Width="95%" autogeneratecolumns = "true">
</asp:GridView>
方法2:
make auto generate columns属性为false
<asp:GridView ID="GridView1" runat="server" Width="95%">
<Columns>
<asp:BoundField HeaderText="My List" />
</Columns>
</asp:GridView>