是一种常见的需求,可以通过以下几种方式实现:
<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>
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:BoundField HeaderText="Name" DataField="Name" />
<asp:BoundField HeaderText="Age" DataField="Age" />
</Columns>
</asp:GridView>
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; }
}
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列中显示来自不同对象的值。具体选择哪种方式取决于需求的复杂度和灵活性的要求。
领取专属 10元无门槛券
手把手带您无忧上云