2013-08-01 103 views
0

在我的代碼中繼器嵌套在datalistdatalist中包含複選框和單選按鈕 我想對複選框checkchanged做數據庫操作,所以我已經寫了這個操作在repeater itemcomand。在這裏,我無法找到中繼器的控制權,所以請指導我如何找到中繼器的控制權。查找控制在中繼器項目命令datalist中嵌套的中繼器

我的設計是這樣的:

<asp:DataList ID="DatalistQues" runat="server" DataKeyField="QuestionID" OnSelectedIndexChanged="DataListText_SelectedIndexChanged" 
Width="100%" OnItemCommand="Repeater1_ItemCommand"> 
<ItemTemplate> 
<table width="100%"> 
<tr> 
<td style="width: 13%"> 
<asp:LinkButton ID="LinkButton6" runat="server" CommandName="Select" CssClass="ppppp"> 
<asp:Image ID="Image1" runat="server" ImageUrl='<% #Eval("Image")%>' Height="60px" 
Width="65px" /> 
</asp:LinkButton> 
</td> 
<td style="width: 87%"> 
<asp:LinkButton ID="LinkButton7" runat="server" CommandName="Select" CssClass="ppppp"> 
<asp:Label ID="Label3" runat="server" Text='<% #Eval("name")%>'></asp:Label> 
</asp:LinkButton> 
</td> 
</tr> 
    <tr> 
     <td style="width: 13%"> 
     </td> 
     <td style="width: 87%; white-space: pre-line"> 
      <asp:Label ID="TextBox2" runat="server" Text='<% #Eval("Question")%>'></asp:Label> 
     </td> 
    </tr> 
    <tr> 
     <td style="width: 13%"> 
     </td> 
     <td style="width: 87%"> 
      <script type="text/javascript" language="javascript"> 

       function fnCheckUnCheck(objId) { 
        var grd = document.getElementById("TabContainer1_TabPanel2_DatalistQues"); 
        alert(grd); 
        //Collect A 
        var rdoArray = grd.getElementsByTagName("input"); 
        alert(rdoArray); 
        for (i = 0; i <= rdoArray.length - 1; i++) { 
         if (rdoArray[i].type == 'radio') { 
          if (rdoArray[i].id != objId) { 
           rdoArray[i].checked = false; 
          } 
         } 
        } 
       } 
      </script> 
      <asp:Repeater ID="RepeaterQues" runat="server" OnItemCommand="Repeater1_ItemCommand"> 
       <HeaderTemplate> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <table style="border: none"> 
         <tr> 
          <td style="width: 100px"> 
           <asp:LinkButton ID="LinkButton23" runat="server" CommandName="radiob"> 
            <asp:RadioButton ID="RadioButton1" runat="server" onclick="fnCheckUnCheck(this.id);" /></asp:LinkButton><asp:LinkButton 
             ID="LinkButton24" runat="server" CommandName="checkb"> 
             <asp:CheckBox ID="CheckBox1" runat="server" Text='<%#Eval("QOption") %>' /></asp:LinkButton> 
          </td> 
          <td style="width: 100px"> 
           <asp:Label ID="empname" Text='<%#Eval("QOption") %>' runat="server"></asp:Label> 
          </td> 
         </tr> 
        </table> 
       </ItemTemplate> 
      </asp:Repeater> 
     </td> 
    </tr> 

</table> 
</ItemTemplate> 
</asp:DataList> 
+0

首先,對於喜歡的DataList,直放站等數據綁定控件,只包含在模板(ItemTemplate,HeaderTemplate等)中的控件被渲染。不是整個Repeater或DataList。 – Prash

+0

如果仔細查看頁面上呈現的HTML(使用開發工具),您將更好地理解渲染的內容以及控件獲取ID分配的模式。 – Prash

+0

我想找到控制repeater itemcomand –

回答

0

試試這個

((Repeater)e.Item.Parent).ID // this gives the ID as specified on the aspx page 

如果你需要的唯一ID,您就必須使用這個

((Repeater)e.Item.Parent).ClientID 
+0

這是給中繼器的Id,但爲了做操作,我需要這個值作爲中繼器 –

+0

(Repeater)e.Item.Parent是你正在尋找的Repeater對象。要獲得ID,您可以使用上面的代碼行。如果沒有這些,你究竟在尋找什麼? – Prash

0

在直放站項目命令你必須先找到發件人

這將返回數據列表項的命名容器。

然後在返回的列表中的項目,你將不得不尋找特定的數據列表紡織機械展覽會 的中繼器,一旦你會發現中繼器,你可以很容易地找到中繼器的項目的控制

+0

通過DataListItem查找命名容器myCurrentItem = DatalistQues.SelectedItem;返回null –