0
在服務器端後,我有這樣的代碼:設置一個hiddenfield爲「不變」 OnValueChanged
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();
}
此方法綁定到一個「OnValueChanged」這是由這個小JS觸發的事件:
self.getExcel = function (stringBase64) {
$("#hiddenFiedlName").val(stringBase64).change();
__doPostBack();
}
第一次觸發事件後,它會在每次回發時觸發。我認爲這種奇怪的行爲發生是因爲由js代碼修改的「更改觸發器」未被真正的回發清除。
現在,我的假設是正確的嗎?如果是這樣,有沒有辦法以編程方式清除這個「更改」觸發器?
謝謝
EDIT1:在「每一個回發」我寫的都是由其他按鈕在同一頁面中觸發其他文件下載。
我想這個問題可能在這裏:http://api.jquery.com/change/「對於選擇框,複選框和單選按鈕,當用戶使用鼠標進行選擇時,會立即觸發該事件,但對於其他元素類型,事件被推遲到元素失去焦點。「我不知道如何處理隱藏字段 – jbl
事件沒有任何問題被解僱。事實是,當隱藏域沒有改變時也會觸發它。 – Abaco
我想知道爲什麼你需要.change()。不會設置值並調用__doPostBack就夠了嗎?另外,您的HiddenFields是否啓用了ViewState?我猜他們應該。 – jbl