0
  • ASP.NET 4
  • jQuery 1.7.1
  • 浏览器:IE9

你好

我在 UpdatePanel 中使用带有 gridview 控件的 jquery,因此,每次单击 gridview 的一行时,Jquery 都会编辑 HiddenField 控件的值,因此当我需要“选定索引”时,我只使用 HiddenField 的值。在 Chrome 和 Firefox 中一切正常,但在 IE9 中却不行。单击一行并将其索引分配给 HiddenField 后,当我单击按钮并触发服务器端事件时,当我检索 HiddenField 的值时,我得到它的默认值(在标记中定义的那个),而不是换了一个。而且,奇怪的是,如果我使用 and alert(HiddenField.value),它会显示行索引!所以,这个问题只发生在服务器端功能上,即使在回发之后隐藏字段值被保留,但始终作为服务器端的默认值......

这是我的 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

4 回答 4

1

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

最好使用命令参数、命令名称和触发服务器端点击。

于 2012-12-07T13:40:38.253 回答
1

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

<ContentTemplate>尝试移动标签内的隐藏字段:

<asp:UpdatePanel ID="upTripsGrid" runat="server" UpdateMode="Always">
    <ContentTemplate>
        <asp:HiddenField runat="server" ID="HFSeleccionIndexRow" value="0" />
        .....
    </ContentTemplate>
</asp:UpdatePanel>
于 2012-12-07T14:05:02.613 回答
0

尝试像这样设置值:

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

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

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

         if (tex != index) {
           $('#<%=HFSeleccionIndexRow.ClientID%>').val(index);
         }
     });
于 2012-12-07T13:26:53.487 回答
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);
        }
    }
});
于 2012-12-07T13:41:59.547 回答