0
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 ?

4

3 回答 3

4

首先,您应该使用某个类而不是字符串创建一个列表。然后,您可以将 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和其他属性。

于 2013-03-05T11:17:50.443 回答
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();
于 2013-03-05T11:22:29.750 回答
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>

但这不是一个好主意。
正如两位绅士所建议的那样,您应该拥有适当的财产结构。

于 2013-03-05T11:46:38.357 回答