2011-11-09 57 views
0

好吧,我似乎無法找出這一個了..我有1個表有列ID,這允許一個選項有一個子選項。因此,這將是這樣的:在asp.net中顯示父/子記錄gridview

id | parentid 
1 | null 
2 | null 
3 |  1 

我怎麼需要它在我的GridView的顯示是這樣的:

id | parentid 
1 |  null 
3 |  1 
2 |  null 

任何想法,我將是最greatful..and以防萬一我有搜索和嘗試Sql COALESCE的選擇,但也沒有工作要麼..

+1

我不認爲這裏有足夠的信息來用任何有意義的方式回答你的問題。您的「應該看起來的樣子」選項似乎只是將項目2和3的數據和交換位置居中。該訂單的確切程度如何? –

回答

0

我會使用ListView或DataList而不是GridView。這應該讓你在正確的道路上:

<table width="595px"> 
    <asp:DataList BackColor="#ffffff" id="DataList1" DataKeyField="<ID>" OnItemDataBound="DataList1_ItemDataBound" runat="server" Width="100%">  
     <ItemTemplate> 
      <tr> 
       <td> 
        <asp:LinkButton ID="LinkButton1" runat="server" Text="+" OnCommand="LinkButton1_Command" CommandArgument='<%#Container.ItemIndex%>'></asp:LinkButton>  
       </td> 
       <td><%#Eval("<COLUMN NAME>")%></td> 
       <td><%#Eval("<COLUMN NAME>")%></td> 
       <td><%#Eval("<COLUMN NAME>")%></td> 
      </tr> 
      <asp:PlaceHolder ID="plcChildView" runat="server"> 
       <asp:DataList ID="DataList2" runat="server" Width="100%"> 
        <ItemTemplate> 
         <tr> 
          <td><%#Eval("<CHILD OLUMN NAME>")%></td> 
          <td><%#Eval("<CHILD COLUMN NAME>")%></</td> 
          <td><%#Eval("<CHILD COLUMN NAME>")%></</td>       
         </tr> 
        </ItemTemplate> 
       </asp:DataList> 
      </asp:Panel> 
     </ItemTemplate> 
    </asp:DataList> 
</table> 

而當用戶點擊DataList1 LinkBut​​ton的/按鈕,做這樣的事情:

protected void LinkButton1_Command(object sender, CommandEventArgs e) 
{ 
    //pass index of item in command argument 
    int itemIndex = Convert.ToInt32(e.CommandArgument);  

    //find the pnlChildView control 
    PlaceHolder childViewHolder = (PlaceHolder)DataList1.Items[itemIndex].FindControl("plcChildView"); 
    if (childViewHolder != null) 
    { 
     //toggle visibility of childViewPanel and bind child list if panel is visible 

     if (childViewHolder.Visible) 
     { 
      DataList childList = childViewHolder.FindControl("DataList2"); 
      if (childList != null) 
      { 
       int keyValue = (int)DataList1.DataKeys[itemIndex]; 

       //bind the list using DataList1 data key value 
       childList.DataSource = <DATA SOURCE>; //get data using keyValue 
       childList.DataBind(); 
      } 
     } 
    } 
} 
+0

感謝我爲我工作,但因爲他們需要任何子選項在飛行中處理,我們將與樹視圖:S但只是想讓你知道這對我真的很有用。 – Andres

+0

不用擔心...;) –