C# 在Jquery中更改的值不会显示在codebehind上 ASP.NET 4 Jquery 1.7.1 浏览器:IE9
嗨 我在UpdatePanel中使用jquery和gridview控件,因此每次单击gridview的一行jquery都会编辑HiddenField控件的值,因此当我需要“所选索引”时,我只使用HiddenField的值。在Chrome和Firefox中,一切都可以正常工作,但在IE9中却不行。单击一行并将其索引分配给HiddenField之后,当我单击一个按钮并触发服务器端事件时,当我检索HiddenField的值时,我得到它的默认值(在标记中定义的值),而不是更改的值。奇怪的是,如果我使用并提醒(HiddenField.value),它会显示行索引!因此,问题只发生在服务器端函数上,即使在回发之后,HiddenField值也会被保留,但在服务器端始终是默认值 这是我的Jquery代码:C# 在Jquery中更改的值不会显示在codebehind上 ASP.NET 4 Jquery 1.7.1 浏览器:IE9,c#,jquery,asp.net,C#,Jquery,Asp.net,嗨 我在UpdatePanel中使用jquery和gridview控件,因此每次单击gridview的一行jquery都会编辑HiddenField控件的值,因此当我需要“所选索引”时,我只使用HiddenField的值。在Chrome和Firefox中,一切都可以正常工作,但在IE9中却不行。单击一行并将其索引分配给HiddenField之后,当我单击一个按钮并触发服务器端事件时,当我检索HiddenField的值时,我得到它的默认值(在标记中定义的值),而不是更改的值。奇怪的是,如果我使用并
$('[id$=divtxtIdPresentacion]').click(function () {
var tex = $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value");
var index = $(this).attr("commandargument");
if (tex != index) {
$('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value", index);
}
});
还有希登菲尔德(以防万一):
尝试如下设置值:
$('[id$=divtxtIdPresentacion]').click(function () {
var tex = $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value");
var index = $(this).attr("commandargument");
if (tex != index) {
$('#<%=HFSeleccionIndexRow.ClientID%>').val(index);
}
});
$('[id$=divtxtdpresentacion]')。单击(函数(){
var tex=$('#').attr(“值”);
var index=$(this.attr(“commandargument”);
如果(tex!=索引){
$('#').val(索引);
}
});
对于已更改的选定索引,无需使用jQuery代码。您已使用更新面板,因此不会向用户显示服务器跳闸
最好使用命令参数、命令名和fire server端单击。尝试改用此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);
}
}
});
$('[id$=divtxtdpresentacion]')。单击(函数(){
var tex=$('#').attr(“值”);
var index=$(this.attr(“commandargument”);
如果(tex!=索引){
如果($.browser.msie){
$(“#”)prop(“默认值”,索引);
}
否则{
$('#').attr(“值”,索引);
}
}
});
您的隐藏输入字段不在更新面板控件内。任何到服务器的异步往返都只会导致UpdatePanel
本身中的控件在UI上更新,因此即使后台代码运行并更新隐藏字段,在前端它们仍然保持不变,因为它们位于面板之外
尝试移动
标记中的隐藏字段:
<asp:UpdatePanel ID="upTripsGrid" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:HiddenField runat="server" ID="HFSeleccionIndexRow" value="0" />
.....
</ContentTemplate>
</asp:UpdatePanel>
.....
是的,我使用了alert(某种东西)来确定它,正如我所说的,它在其他浏览器上运行良好,我只是测试了这两个浏览器,以确定OK,您的隐藏输入字段是否在更新面板控件中?如果没有,请尝试移动
标记中的隐藏字段,然后再次测试。它成功了!!非常感谢你!从昨天起我就被这件事折磨死了!如果我错了,我很抱歉,但是使用更新面板,至少会触发部分回发,这意味着服务器会跳闸,不是吗?(虽然我正在考虑这样做,但这个bug正在杀死我……)使用更新面板,将触发整个服务器跳闸,但只有更新面板中的代码才会更改。若你们在更新面板外有下拉列表,那个么它不会改变,它的值保持不变。若启动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);
}
}
});
<asp:UpdatePanel ID="upTripsGrid" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:HiddenField runat="server" ID="HFSeleccionIndexRow" value="0" />
.....
</ContentTemplate>
</asp:UpdatePanel>