无法将转发器 Container.ItemIndex 作为参数传递给 javascript 函数

Not able to pass repeater Container.ItemIndex to javascript function as an argument

<script type="text/javascript" language="javascript">
function EnableDisablePkgInclusionDropDown(val) {

        alert("RowIndex: " + val);        
        var repeater = document.getElementById('<%= pnlrptPckgInclusions.ClientID %>');
        var dropdowns = repeater.getElementsByTagName('select');
        dropdowns[val].disabled = true;
        dropdowns[val].selectedIndex = "0";
}
</Script>

    <asp:Repeater runat="server" ID="rptPckgInclusions">
                                <HeaderTemplate>
                                    <table cellpadding="0" cellspacing="0" width="100%" border="0">
                                        <tr>

                                            <td align="left" style="width: 20%; text-align: left">
                                                Parent MarkUp
                                            </td>

                                        </tr>
                                    </table>
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <table cellpadding="0" cellspacing="0" width="100%" border="0">
                                        <tr>                                            

                                            <td align="center" style="width: 20%;">
                                                <asp:CheckBox runat="server" ID="chkApplyParentMarkUp" OnClick="javascript:EnableDisablePkgInclusionDropDown(<%# Container.ItemIndex %>);"/>
                                            </td>

                                        </tr>
                                    </table>
                                </ItemTemplate>
                            </asp:Repeater>

我正在尝试将 container.ItemIndex 作为参数传递给复选框 OnClick 事件上的 javascript 函数 enable/disable 少数 controls.But 它没有显示 [=21 中的值=]函数。

提前致谢!

首先要小心 JS 函数中的组件命名(pnlrptPckgInclusions != rptPckgInclusions)

在此之后,您将 OnClick 处理程序更改为此

OnClick='<%# "javascript:EnableDisablePkgInclusionDropDown(" + Container.ItemIndex + ")" %>'

应该有帮助。祝你有美好的一天!

我想提出我的方法。 只需在标记中添加一个属性 name='<%# Container.ItemIndex %>' 即可。 例如,

<ItemTemplate>
  <table cellpadding="0" cellspacing="0" width="100%" border="0">
       <tr>                                            
       <td align="center" style="width: 20%;">
           <asp:CheckBox runat="server" ID="chkFoo" OnClick="Test(this)" name='<%# Container.ItemIndex %>'/>
       </td>
       </tr>
     </table>
  </ItemTemplate>

现在,在 javascript 方法 Test(this) 中,您可以使用 'this.name'.

获取转发器行索引

或者,如果您观察生成的标记 html,您会发现复选框的 ID 生成为 'ConetentPlaceholder1_rptTest_chkFoo_0。 您可以在 javascript 方法中拆分此 id 以获得转发器行索引。