在repeater item命令中查找嵌套在datalist中的repeater的控制

时间:2013-08-01 04:50:24

标签: repeater datalist

在我的代码中,嵌套在datalistdatalist中包含复选框和单选按钮 我想对复选框的checkchanged进行数据库操作,所以我在转发器itemcomand上写了这个操作。在这里,我无法找到对转发器的控制。所以请指导我如何找到转发器的控制权。

我的设计是这样的:

<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>

2 个答案:

答案 0 :(得分:0)

在Repeater的项目命令中,您必须首先找到发件人的命名容器

它会返回你的datalist项目。

然后在返回的列表项中,您将不得不找到该特定数据列表的转发器 一旦你找到转发器,你就可以轻松找到转发器项目的控件

答案 1 :(得分:0)

试试这个

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

如果您需要唯一ID,则必须使用此

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