0

在我的代码中,中继器嵌套在 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>
4

2 回答 2

0

尝试这个

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

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

((Repeater)e.Item.Parent).ClientID
于 2013-08-01T05:07:39.170 回答
0

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

它会返回你的数据列表项。

然后在返回的列表项中,您将必须找到该特定数据列表的中继器一旦您找到中继器,您就可以轻松找到中继器项目的控件

于 2013-08-01T05:03:17.380 回答