【问题标题】:Set an hiddenfield as "unchanged" after OnValueChanged在 OnValueChanged 之后将隐藏字段设置为“未更改”
【发布时间】:2012-11-27 15:51:55
【问题描述】:

在服务器端我有这个代码:

    protected void DownloadExcel(object sender, EventArgs e)
    {
        byte[] arrayExcel = Convert.FromBase64String(reportBase64.Value);
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.AppendHeader("content-length", arrayExcel.Length.ToString());
        HttpContext.Current.Response.AppendHeader("content-disposition", "attachment;filename=excelName.xls");
        HttpContext.Current.Response.ContentType = "application/Excel";
        HttpContext.Current.Response.BinaryWrite(arrayExcel);
        HttpContext.Current.Response.End();
        HttpContext.Current.Response.Close();
        HttpContext.Current.Response.Flush();
    }

此方法绑定到由这个小 js 触发的“OnValueChanged”事件:

    self.getExcel = function (stringBase64) {
    $("#hiddenFiedlName").val(stringBase64).change();
    __doPostBack();
}

在第一次触发事件后,它会在每次回发时触发。我认为发生这种奇怪的行为是因为 js 代码修改的“更改触发器”没有被真正的回发清除。

现在,我的假设是否正确?如果是这样,有没有办法以编程方式清除这个“更改”触发器?

谢谢

EDIT1:我所写的“每个回发”是由同一页面中的其他按钮触发的其他文件下载。

【问题讨论】:

  • 我想问题可能出在这里:api.jquery.com/change "对于选择框、复选框和单选按钮,当用户使用鼠标进行选择时会立即触发该事件,但对于其他元素类型事件被推迟,直到元素失去焦点。”我不知道隐藏字段的焦点是如何处理的
  • 触发事件没有任何问题。事实上,当隐藏字段没有发生任何变化时,它也会被触发。
  • 我想知道你为什么需要 .change() 。设置值并调用 __doPostBack 还不够吗?另外,您的 HiddenFields 是否启用了 ViewState ?我想他们应该这样做。
  • 感谢您的 cmets。我找到了解决方案。请参考答案。
  • 感谢跟进这个棘手的问题!

标签: javascript asp.net postback hidden-field


【解决方案1】:

这个问题有点棘手,但我设法解决了。

事实是:如果没有执行真正的回发(不考虑对文件进行响应),值仍然被认为是“已更改”

解决这个问题的唯一方法似乎是手动“重置”隐藏字段的值。

我想出了这个:

self.getExcel = function (stringBase64) {
    $("#hiddenFiedlName").val(stringBase64);
    __doPostBack();
    $("#hiddenFieldName").val("");
}

回发后,值恢复为初始值(始终为空字符串)。这样做不会触发“ValueChanged”事件。

正如 jbl 的评论中所述,change() 是无用的(请参阅他在问题中的评论)。

【讨论】:

    猜你喜欢
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    相关资源
    最近更新 更多