首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在GridView列中显示来自不同对象的值

是一种常见的需求,可以通过以下几种方式实现:

  1. 使用TemplateField:在GridView中添加一个TemplateField列,然后在ItemTemplate中使用绑定表达式来获取不同对象的值。例如,假设有两个对象A和B,分别有属性Name和Age,可以使用以下代码在GridView中显示它们的值:
代码语言:txt
复制
<asp:GridView ID="GridView1" runat="server">
    <Columns>
        <asp:TemplateField HeaderText="Name">
            <ItemTemplate>
                <%# Eval("Name") %>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Age">
            <ItemTemplate>
                <%# Eval("Age") %>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
  1. 使用BoundField和DataBinder:如果要在同一列中显示不同对象的值,可以使用BoundField,并在代码-behind中使用DataBinder来获取不同对象的值。例如,假设有两个对象A和B,分别有属性Name和Age,可以使用以下代码在GridView中显示它们的值:
代码语言:txt
复制
<asp:GridView ID="GridView1" runat="server">
    <Columns>
        <asp:BoundField HeaderText="Name" DataField="Name" />
        <asp:BoundField HeaderText="Age" DataField="Age" />
    </Columns>
</asp:GridView>
代码语言:txt
复制
protected void Page_Load(object sender, EventArgs e)
{
    List<object> objects = new List<object>();
    objects.Add(new A { Name = "John" });
    objects.Add(new B { Age = 25 });

    GridView1.DataSource = objects;
    GridView1.DataBind();
}

public class A
{
    public string Name { get; set; }
}

public class B
{
    public int Age { get; set; }
}
  1. 使用自定义列:如果要更加灵活地控制列的显示,可以使用自定义列。可以继承GridView的TemplateField类,然后在ItemTemplate中编写自定义的HTML代码和绑定表达式来获取不同对象的值。例如,假设有两个对象A和B,分别有属性Name和Age,可以使用以下代码在GridView中显示它们的值:
代码语言:txt
复制
public class CustomTemplateField : TemplateField
{
    public string DataField { get; set; }

    protected override void InitializeCell(DataControlFieldCell cell, DataControlCellType cellType, DataControlRowState rowState, int rowIndex)
    {
        if (cellType == DataControlCellType.DataCell)
        {
            object dataItem = DataBinder.GetDataItem(cell.NamingContainer);
            string value = DataBinder.GetPropertyValue(dataItem, DataField).ToString();
            cell.Text = value;
        }

        base.InitializeCell(cell, cellType, rowState, rowIndex);
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    List<object> objects = new List<object>();
    objects.Add(new A { Name = "John" });
    objects.Add(new B { Age = 25 });

    CustomTemplateField nameField = new CustomTemplateField();
    nameField.HeaderText = "Name";
    nameField.DataField = "Name";
    GridView1.Columns.Add(nameField);

    CustomTemplateField ageField = new CustomTemplateField();
    ageField.HeaderText = "Age";
    ageField.DataField = "Age";
    GridView1.Columns.Add(ageField);

    GridView1.DataSource = objects;
    GridView1.DataBind();
}

public class A
{
    public string Name { get; set; }
}

public class B
{
    public int Age { get; set; }
}

以上是三种常见的方式,在GridView列中显示来自不同对象的值。具体选择哪种方式取决于需求的复杂度和灵活性的要求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券