2014-04-02 31 views
0

我花了一些小時serching在此。我有以下類webform數據綁定列表裏面另一個列表

public class Tasks 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public Dictionary<int,string> SubTasks { get; set; }  
} 

我的問題是當我有List<Tasks>如何將此綁定到web窗體。我將能夠綁定Id和名稱。但無法綁定子任務列表

Web表單

<table class="table1"> 
      <tr> 
       <th>ID</th> 
       <th>Name</th> 
       <th>Sub</th> 
      </tr> 
      <asp:ListView ID="Listview1" runat="server">  
       <LayoutTemplate> 
        <ol> 
         <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder> 
        </ol> 
       </LayoutTemplate>  
       <ItemTemplate>     
        <tr> 
         <td><%# Eval("Id")%></td> 
         <td><%# Eval("Name")%></td> 
         <%--<td>????</td>--%> 
        </tr>     
       </ItemTemplate>   
      </asp:ListView> 
     </table> 

我需要這種輸出

------------------------------ 
id  |Name |sub  | 
----------------------------- 
    1 | abc | 1a aaa | 
     |  | 1f sss | 
     |  | 1v ggg | 
----------------------------- 
    2 | ewq | 2a ccc |  
----------------------------- 
    3 | rty | 3a bbb |  
----------------------------- 
+0

您需要將「SubTasks」綁定在哪裏?同列表'? –

+0

@ huMptyduMpty - 是的。我需要顯示這個單一的信息塊。需要顯示ID,名稱及其子任務 –

+0

你現在清楚該怎麼做? –

回答

0

的這有些不同的方法,但工程

在你。 aspx添加字面控件

<body> 
    <form id="form1" runat="server"> 
    <div>  
     <asp:Literal ID="Literal1" runat="server"></asp:Literal>  
    </div> 
    </form> 
</body> 

和你cs文件

private void Fill() 
     { 
      var list = new List<Tasks>(); 

      // this is just to populate some sample data 
      for(var i=1;i<5;i++) 
      { 
       var obj = new Tasks(); 
       obj.Id = "Id"+i.ToString(); 
       obj.Name = "Name " + i.ToString(); 
       var d = new Dictionary<int, string>(); 
       for(var j=1;j<3;j++) 
       { 
        d.Add(j,"sub"+j.ToString()); 
       } 
       obj.SubTasks=d; 
       list.Add(obj); 
      } 

      Literal1.Text = "<table class='table1'><tr><th>ID</th><th>Name</th><th>Sub</th></tr>"; 

      foreach (var item in list) 
      { 
       var str = "<tr>"; 
       str +="<td>"+ item.Id.ToString()+"</td>"; 
       str += "<td>" + item.Name+ "</td>"; 
       if(item.SubTasks!=null) 
       { 
        str += "<td><table>"; 
        foreach(var sub in item.SubTasks) 
        {      
         str +="<tr>"; 
         str += "<td>" + sub.Key.ToString() + "</td>"; 
         str += "<td>" + sub.Value.ToString() + "</td>"; 
         str += "</tr>"; 
        } 
        str += "</td></table>"; 
       } 
       str += "</tr>"; 
       Literal1.Text += str; 

      } 

      Literal1.Text +="</table>"; 

     } 

現在,你只需要某些樣式應用到表,以獲得正確的顯示

希望這有助於!

相關問題