您好,我有一个包含用户定义数据类型属性的类。我已经创建了该类的一个实例。当我将该类的那个对象绑定(bind)到 DetailsView 时,它显示除用户定义的数据类型属性之外的所有属性。这是示例代码。
public class Customer
{
public string CustomerName { get; set; }
public int Age { get; set; }
public Address CustomerAddress { get; set; }
}
Address class looks like
public class Address
{
public string Line1 { get; set; }
public string Line2 { get; set; }
public string City { get; set; }
}
Creating an object of Customer class
var cust = new Customer {
CustomerName = "abc",
Age = 25,
CustomerAddress = new Address{ Line1 = "abc", Line2 = "abc", City = "abc" }};
Binding cust to Details View
List<Customer> customerInfo = new List<Customer>();
customerInfo.Add(cust);
DetailsView1.DataSource = custmerInfo;
DetailsView1.DataBind();
In .aspx page
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False">
<Fields>
<asp:BoundField DataField="CustomerName" HeaderText="Customer Name">
<asp:BoundField DataField="Age" HeaderText="Customer Age">
<asp:BoundField DataField="CustomerAddress" HeaderText="Customer Address ">
</Fields>
</asp:DetailsView>
以上代码未显示客户地址。谁能帮帮我?
最佳答案
绑定(bind)数据时,如果主类(此处为客户)有子类(此处为地址),则要显示子类对象属性,我们需要使用<asp:TemplateField />
。 .
因此,请使用以下示例:
<asp:TemplateField HeaderText=”City”>
<ItemTemplate>
<asp:Label ID=”customerCity” runat=”server”
Text='<%# Eval("CustomerAddress.City") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
下面的代码本来是可以工作的,但它不会:
<asp:BoundField DataField="CustomerAddress.City" HeaderText="City" />
关于c# - 如何将用户定义的数据类型对象绑定(bind)到 DetailsView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430963/