2011-10-14 4 views
2

는 다른 데이터 유형 많이 있습니다.의 asp.net의 gridview 내의 webside 내가이 데이터 집합에 <p>PowerShell을</p>에서 recived 데이터 집합에 바인딩있는 gridview 을 가지고

모든 것이 잘 작동하지만 한 필드에 대해 더 깊은 속성을 바인딩 필드에 바인딩하고 싶습니다!

은이 같은 바인딩 :

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"처럼 fullName이 포함 된 매우 긴 문자열을 보여줍니다!

거기에는 fullName 만 바인딩하는 방법이 있습니까? "DataField="Identity.ServiceID.FullName"? XML로? (이것은 작동하지 않습니다 :-)

답변

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(); 
    } 
} 
이 샘플에서보세요