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

时间:2015-04-23 12:51:46

标签: javascript jquery repeater

<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函数以启用/禁用几个控件。但它没有在Javascript函数中显示该值。

提前致谢!

2 个答案:

答案 0 :(得分:0)

首先要小心JS函数中的组件命名( pnlrpt PckgInclusions!= rpt PckgInclusions)

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

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

应该有所帮助。祝你有愉快的一天!

答案 1 :(得分:0)

我想建议我的方式。 只需添加一个属性,例如name =&#39;&lt;%#Container.ItemIndex%&gt;&#39;在标记中。 例如,

<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)中,您可以使用&#39; this.name&#39;来获取转发器行索引。

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