将集合绑定到Gridview

时间:2013-03-05 11:14:44

标签: asp.net generics gridview collections

protected void BindGV()
        {
            List<List<string>> list = new List<List<string>>()
            {
                new List<string>() {"Hussain","IT","Hyderabad" },
                new List<string>() { "Sharief","IT","Bangalore"},
                new List<string>() { "Shaik","IT","Chennai"}
            };
            gv1.DataSource = list;
            gv1.DataBind();

        }

我想在Gridview中只显示名称和城市。我想用:

<asp:Boundfield Datafield="" Headertext="Name"/>

在这种情况下如何使用DataField?

3 个答案:

答案 0 :(得分:4)

首先,您应该创建一个包含某个类的List,而不是string。然后,您可以将DataGrid中的类属性用作列。

例如:

public class Personnel
{
    public string Name { get; set; }
    public string Department { get; set; }
    public string Location { get; set; }
}

然后您可以创建一个数据源,如:

protected void BindGV()
{
    List< Personnel > list = new List< Personal >()
    {
        new Personnel {Name = "Hussain", Department = "IT", Location = "Hyderabad" },
        new Personnel {Name = "Sharief", Department = "IT", Location = "Bangalore"},
        new Personnel {Name = "Shaik",  Department = "IT", Location = "Chennai"}
    };

    gv1.DataSource = list;
    gv1.DataBind();

}

在你的代码中创建DataGrid,如

<asp:DataGrid runat="server" ID="gv1" AutoGenerateColumns="False>
    <Columns>
        <asp:BoundColumn HeaderText="Name" DataField="Name" />
        <asp:BoundColumn HeaderText="Dept" DataField="Department" />
        <asp:BoundColumn HeaderText="City" DataField="Location" />
    </Columns>
</asp:DataGrid>

那应该是它。

更新:根据您的评论,您希望以编程方式访问DataField。您可以通过枚举gv1.Columns属性然后将结果转换为BoundColumn来执行此操作。这样您就可以访问DataField和其他属性。

答案 1 :(得分:1)

正如Husein所说,首先用Get,Set创建类。 喜欢

Public class BindGV
{
    public string name { get; set ;}
    public string Profile { get; set ;}
    public string loc { get; set ;}
}

在aspx页面Gridview BoundField ....

<ItemTemplate..>
    <b><%# DataBinder.Eval(Container, "DataItem.Title") %> </b>
    <br />
    <%# DataBinder.Eval(Container, "DataItem.Description") %>
</ItemTemplate>

...或Apsx.cs代码

BindGV.datasource=object.GetDetails();
BindGV.dataBind();

答案 2 :(得分:0)

你可以利用linq

List<List<string>> list = new List<List<string>>()
                              {
                                 new List<string>() {"Hussain", "IT", "Hyderabad"},
                                 new List<string>() {"Sharief", "IT", "Bangalore"},
                                 new List<string>() {"Shaik", "IT", "Chennai"}
                              };

linq查询

var v = from li in list select new {Name = li[0], City=li[2]};
gv1.DataSource = v;
gv1.DataBind();

和gridview

<asp:DataGrid runat="server" ID="gv1" AutoGenerateColumns="False>
  <Columns>
    <asp:BoundColumn HeaderText="Name" DataField="Name" />
    <asp:BoundColumn HeaderText="City" DataField="City" />
 </Columns>
</asp:DataGrid>

但这不是一个好主意 你应该按照两个温柔的男人的建议,建立一个适当的财产结构。