在Jquery中更改的值不会显示在代码后面

时间:2012-12-07 13:17:55

标签: c# jquery asp.net

  • ASP.NET 4
  • Jquery 1.7.1
  • 浏览器:IE9

您好

我在UpdatePanel中使用jquery和gridview控件,所以,每次我点击gridview的一行时,Jquery会编辑一个HiddenField控件的值,所以当我需要“选中的索引”时,我只是使用的值HiddenField。一切在Chrome和Firefox中运行良好,但在IE9中则不行。单击一行并将其索引分配给HiddenField后,当我单击一个按钮并触发服务器端事件时,当我检索HiddenField的值时,我得到其默认值(在标记中定义的值),而不是换了一个。而且,奇怪的是,如果我使用并警告(HiddenField.value),它会向我显示行索引!所以,问题只发生在服务器端功能上,即使在回发后保留了HiddenField值,但在服务器端总是默认为...

这是我的Jquery代码:

$('[id$=divtxtIdPresentacion]').click(function () {

             var tex = $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value");

             var index = $(this).attr("commandargument");             

             if (tex != index) {

                 $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value", index);
             }

         });

按钮事件的一部分:

 protected void gridPresentacionAgregar_SelectedIndexChanged(object sender, EventArgs e)
    {       

         int index = int.Parse(HFSeleccionIndexRow.Value);
         ...
     }

和HiddenField(以防万一):

<asp:HiddenField runat="server" ID="HFSeleccionIndexRow" value="0" />

4 个答案:

答案 0 :(得分:1)

无需使用jQuery代码更改所选索引。您已使用更新面板,因此不会向用户显示服务器行程。

最好使用命令参数,命令名和fire服务器端点击。

答案 1 :(得分:1)

您的隐藏输入字段不在更新面板控件中。任何到服务器的异步往返都只会导致UpdatePanel本身内的那些控件在UI上更新,所以即使代码隐藏运行并更新隐藏字段,在前端它们保持不变,因为它们坐在小组外面。

尝试移动<ContentTemplate>标记中的隐藏字段:

<asp:UpdatePanel ID="upTripsGrid" runat="server" UpdateMode="Always">
    <ContentTemplate>
        <asp:HiddenField runat="server" ID="HFSeleccionIndexRow" value="0" />
        .....
    </ContentTemplate>
</asp:UpdatePanel>

答案 2 :(得分:0)

尝试设置如下值:

    $('[id$=divtxtIdPresentacion]').click(function () {

         var tex = $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value");

         var index = $(this).attr("commandargument");             

         if (tex != index) {
           $('#<%=HFSeleccionIndexRow.ClientID%>').val(index);
         }
     });

答案 3 :(得分:0)

尝试使用此jquery函数

$('[id$=divtxtIdPresentacion]').click(function () {
    var tex = $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value");
    var index = $(this).attr("commandargument");             
    if (tex != index) {
        if($.browser.msie){
             $("#<%=HFSeleccionIndexRow.ClientID%>").prop("defaultValue", index);
        }
        else{
             $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value", index);
        }
    }
});