2

我的网页有一个 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" />

服务的 boundfield 绑定到以下类型的数据:"Microsoft.Rtc.Rgs.Management.RgsIdentity"

它包含一个instanceIDserviceID属性并且serviceID包含一个属性fullName

当我直接绑定它时,"DataField="Identity"它会显示一个包含全名的很长的字符串!

有没有办法只绑定全名?喜欢"DataField="Identity.ServiceID.FullName"?在xml中?(这不起作用:-)

4

1 回答 1

3

是的,它是可能的,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();
    }
}
于 2011-10-14T09:32:41.143 回答