2010-01-11 29 views
2

我有一箇中繼器,它目前顯示這些縣內的縣和鄉鎮的列表。除了具有不同的RowFormat屬性之外,縣級記錄和鄉鎮記錄在重複器中的處理方式相同。每條記錄還有一個唯一的ID和要顯示的單位(無論是鄉鎮還是縣)。還有一個鄉鎮參考其母縣的專欄。我利用轉播器上的AlternatingItemTemplate選項在每個鄉鎮上顯示交替的顏色。ASP.NET中的可摺疊中繼器

我希望能夠在每行上點擊'+'或' - '圖像時顯示和隱藏鄉鎮行。向該圖像添加到僅縣行我已經添加一個附加列到綁定數據表其是空的(對於鄉鎮)或包含含有的「+」圖像的TableCell:

row["Image"] = "<img src='/includes/plus.gif' />"; 

這基本上我所追求的:我已經試過調用JavaScript功能,當用戶點擊「+」或

alt text http://img85.imageshack.us/img85/9586/counties.png

「 - 」圖像上的縣,但我真的不知道如何通過javascript調用訪問所有的小鎮,以隱藏它們。我還需要切換countiy的Image域來顯示相反的圖像(即從'+' - >' - ',反之亦然)。

<TABLE width="100%" style="border: thin solid #A3A3A3;" cellspacing="0px"> 
    <asp:repeater id="RepeaterUnits" Runat="server"> 
    <ItemTemplate> 
     <tr '<%# (DataBinder.Eval(Container.DataItem, "RowFormat")) %>' > 
      <td style="width: 16px" onclick='ClickCollapse(<%# (DataBinder.Eval(Container.DataItem, "UnitID")) %>);'> 
       <%# (DataBinder.Eval(Container.DataItem, "Image")) %> 
      </td> 
      <td onclick='ClickUnit(<%# (DataBinder.Eval(Container.DataItem, "UnitID")) %>);' width="100%"> 
       <%# (DataBinder.Eval(Container.DataItem, "UnitName")) %> 
      </td> 
     </tr> 
    </ItemTemplate> 
    <AlternatingItemTemplate> 
     <tr '<%# (DataBinder.Eval(Container.DataItem, "AltRowFormat")) %>'> 
      <td style="width: 16px" onclick='ClickCollapse(<%# (DataBinder.Eval(Container.DataItem, "UnitID")) %>);'> 
       <%# (DataBinder.Eval(Container.DataItem, "Image")) %> 
      </td> 
      <td onclick='ClickUnit(<%# (DataBinder.Eval(Container.DataItem, "UnitID")) %>);' width="100%"> 
       <%# (DataBinder.Eval(Container.DataItem, "UnitName")) %> 
      </td> 
     </tr> 
    </AlternatingItemTemplate> 
</asp:repeater> 

我想過可能使用在數據網格中的每個縣一箇中繼器來遍歷每個縣的鄉鎮,但截至目前我存儲在同一個數據表中的每個記錄,因此將不得不將縣和城鎮鄉鎮分成多個表格。任何人都可以提出一種更好的方法嗎?我對ASP.NET比較陌生,所以我不知道所有可用的選項。

回答

1

你可以把鄉鎮裏的一個div,然後簡單地顯示/隱藏該div?

+0

問題在於直放站沒有在鄉鎮之間劃分,所以我沒有辦法將鄉鎮劃分爲一個單獨的分區。此外,鄉鎮有交替的背景顏色(很難從圖像中分辨出來),這就是爲什麼我使用alternatingItemTemplate的原因。 – Kevin 2010-01-11 19:58:08

+1

你的數據是分層存儲的嗎?如果是這樣,您將使用嵌套中繼器來達到預期的效果,而不必使用多個表。 – 2010-01-11 20:17:09

+0

@Alison不幸的是,它不是按層次存儲的,而鄉鎮在技術上是縣的「孩子」,數據表並沒有區分這一點。不過,我會尋找嵌套的中繼器,看看我能否完成我所追求的。 – Kevin 2010-01-11 20:26:33

0

如果您按照「縣,鄉鎮」的示例對兩列進行排序,則可以有效地循環訪問,每當有新的縣時,就會開始一組新的鄉鎮。

您可以在後面的代碼中使用Repeater的ItemDataBound事件,以每行爲基礎執行所需的任何花哨格式。