Asp.net gridview绑定到特定类型的更深层次属性



我的网站有一个gridview我将它绑定到从powershell接收的数据集

在这个数据集中有很多不同的数据类型。

一切都很好,但对于一个字段,我想绑定一个更深的属性到boundfield!

我这样绑定它:

c#

GridViewAgentGroups.DataSource = dt;
GridViewAgentGroups.DataBind();

标记
        <asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True" />
        <asp:BoundField HeaderText="Service" ReadOnly="True"
                        DataField="Identity" />
        <asp:BoundField DataField="Description" HeaderText="Description" 
                        ReadOnly="True" />

服务绑定的数据类型为:"Microsoft.Rtc.Rgs.Management.RgsIdentity"

包含instanceIDserviceID属性,serviceID包含fullName属性!

当我像"DataField="Identity"一样直接绑定它时,它显示了一个包含fullName的非常长的字符串!

是否有一种方法只绑定fullName?像"DataField="Identity.ServiceID.FullName" ?在xml中?(这行不通:-)

是的,TemplateFields是可能的,但这也取决于dataSource的设计。看一下这个示例:

标记:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <%#Eval("Name") %>
                <%#Eval("GroupName.Name") %>
                <%#Eval("GroupName.RegionName.Name") %>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

背后的代码:

public class Region
{
    public string Name { get; set; }
}
public class Group
{
    public string Name { get; set; }
    private Region _region=new Region();
    public Region RegionName { get { return _region; } set { _region = value; } }
}
public class Product
{
    public string Name { get; set; }
    private Group _groupName = new Group();
    public Group  GroupName { get { return _groupName; } set { _groupName = value; } }
}
public class Products : List<Product>
{
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Region reg1 = new Region() { Name = "North" };
        Region reg2 = new Region() { Name = "East" };
        Group group1 = new Group() { Name="Group1", RegionName=reg1  };
        Group group2 = new Group() { Name = "Group2", RegionName=reg1 };
        Group group3 = new Group() { Name = "Group3", RegionName = reg2 };
        Products prod = new Products()
        {
                new Product(){ Name="Product1", GroupName=group1},
                new Product(){ Name="Product1", GroupName=group2},
                new Product(){ Name="Product2", GroupName=group3},
                new Product(){ Name="Product3", GroupName=group1},
                new Product(){ Name="Product2", GroupName=group2},
        };
        GridView1.DataSource = prod;
        GridView1.DataBind();
    }
}

相关内容

  • 没有找到相关文章

最新更新