2

私のウェブサイドにはグリッドビューがあり、PowerShellから受け取ったデータセットにバインドします

このデータセットには、さまざまなデータ型があります。

すべてが正常に機能していますが、1つのフィールドについて、より深いプロパティをバウンドフィールドにバインドしたいと思います。

私はそれをこのようにバインドします:

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"

これにはinstanceIDandserviceIDプロパティがserviceID含まれ、にはプロパティが含まれますfullName

"DataField="Identity"fullNameが含まれている非常に長い文字列を表示するように直接バインドすると、

fullNameのみをバインドする方法はありますか?のように"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 に答える