您好
我在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" />
答案 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);
}
}
});