c# - 如何将用户定义的数据类型对象绑定(bind)到 DetailsView?

标签 c# asp.net data-binding object detailsview

您好,我有一个包含用户定义数据类型属性的类。我已经创建了该类的一个实例。当我将该类的那个对象绑定(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/

相关文章:

c# - 从链接下载、保存(本地)和显示 PDF

c# - 区分 FileSystemWatcher 中的 Changed 和 Created 事件?

c# - 将 DropDownList 与 DataRow 数组绑定(bind)

asp.net - 如何在 Silverlight 3 对象上调用 javascript 函数?

asp.net - 为什么我不能在 asp :Textbox's Text property? 内进行绑定(bind)

c# - 如何使用自定义路由模式访问 url?

c# - 订阅和取消订阅事件

javascript - 从网页浏览器的代码中检查是否支持 256 位加密

ajax - knockoutjs 数据绑定(bind)隐藏字段值

c# - 样式设置的工具提示不起作用