使用Javascript

时间:2016-06-07 09:11:59

标签: javascript c# jquery asp.net gridview

我的gridview的一部分看起来像这样:

                    <asp:TemplateField HeaderText="Mortality Rate" SortExpression="Other2">
                <EditItemTemplate >
                    <asp:TextBox ID="txtAppLimit" Text='<%#Bind("Other2")%>' runat="server" width="60px" maxlength="14">
                    </asp:TextBox>
                     <asp:RangeValidator ID="RVAppLimit" Type="Currency" runat="server" ControlToValidate="txtAppLimit"  
                            Display="Dynamic" ErrorMessage="" Font-Size="8pt" 
                            CssClass="msgerror" MinimumValue="0" MaximumValue="200" OnPreRender="GridView1_PreRender" ValidationGroup="group1"> 
                    </asp:RangeValidator>  
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblAppLimit" Runat="server" Text='<%# Bind("Other2") %>' >
                    </asp:Label>
                </ItemTemplate>
                    <ItemStyle HorizontalAlign="Right" Width="10%" />
                </asp:TemplateField>

当我点击asp LinkBut​​ton时,我正试图以这种方式获取asp TextBox ID和asp Label ID:

        var $arrL = $('#<%=GridView1.ClientID %>').find('span[id$="lblAppLimit"]');
        var $lbl = $arrL[0];
        ($lbl).disabled = true;
        alert (($lbl).disabled);

        var $arrT = $('#<%=GridView1.ClientID %>').find('input:text[id$="txtAppLimit"]').val();
        var $txt = $arrT[0];
        alert (($txt).innerHTML);

我没有问题禁用lblAppLimit,但是我无法获取文本框ID来禁用它。我上面的代码出了什么问题?

只是添加另一个注释,当我点击浏览器上的视图源时,我能够看到lblAppLimit,但不能看到txtAppLimit。

2 个答案:

答案 0 :(得分:1)

将txtAppLimit设为STATIC,如下所示:

1 <asp:TextBox ID="txtAppLimit" Text='<%#Bind("Other2")%>' width="60px" maxlength="14" ClientIDMode="Static" runat="server"></asp:TextBox>

并将jquery更改为:

1 $(this).find('input:text[id="txtAppLimit"]').val();

<强>更新 您还可以尝试将类添加到每个TextBox,如txtclass1,txtclass2

alert($(this).parent("td").parent("tr").find(".txtclass1").val()); 
alert($(this).parent("td").parent("tr").find(".txtclass2").val());

答案 1 :(得分:1)

txtAppLimit位于EditItemTemplate,因此仅在网格处于编辑模式时才有效

因此在编辑模式下尝试此脚本

var $arrT = $('#<%=GridView1.ClientID %>').find('input:text[id*="txtAppLimit"]').val();
        var $txt = $arrT[0];
        alert (($txt).innerHTML);

我不知道您使用$arrT[0]的原因,但这肯定会在编辑模式下工作

$('#<%=GridView1.ClientID %>').find('input:text[id*="txtAppLimit"]').val()

希望这会对你有所帮助。