#region 是否防止使用者多次提交頁面
/// <summary>
/// 是否防止使用者多次提交頁面。預設為true。
/// 如果為true,則使用者在提交頁面時,會出現提示,防止使用者在伺服器響應之前再次提交。
/// </summary>
public bool OneClick
{
get
{
string key = this.ClientID + "_OneClick";
if (ViewState[key] == null)
{
ViewState[key] = true;
}
return (bool)ViewState[key];
}
set
{
string key = this.ClientID + "_OneClick";
ViewState[key] = value;
}
}
/// <summary>
/// 表單提交時的提示
/// </summary>
protected string mOnSubmitTip = string.Empty;
protected string OnSubmitTip
{
set
{
mOnSubmitTip = value;
}
get
{
if (mOnSubmitTip == "")
{
if (this.CurCulture == 2052)
{
mOnSubmitTip = "正在處理表單,請稍候....";
}
else
{
mOnSubmitTip = "form process, please waiting....";
}
}
return mOnSubmitTip;
}
}
/// <summary>
/// 重建html的頭和尾
/// </summary>
private void RebuildHtml()
{
#region 增加在表單提交時,防止使用者重複提交的措施
int curCtrl;
int count;
HtmlForm form = null;
// 在form上添加提交事件
for (curCtrl = 0, count = this.Controls.Count; curCtrl < count; curCtrl++)
{
form = this.Controls[curCtrl] as HtmlForm;
// 不為NULL
if (form != null)
{
break;
}
}
// RETURN
if (curCtrl == count)
{
return;
}
form.Attributes["onsubmit"] = "try{submitForm(this);}catch(e){}";
// onclick
if (this.OneClick)
{
// 增加顯示提示資訊的表格
StringBuilder sb = new StringBuilder();
sb.Append("<table id=\"show_panel_on_submit\" ");
sb.Append("style=\"position:absolute;display:none;\" ");
sb.Append("border=0 height=100% width=100%>");
sb.Append("\n <tr>");
sb.Append("\n <td align=center>");
sb.Append(OnSubmitTip);
sb.Append("\n </td>");
sb.Append("\n </tr>");
sb.Append("</table>");
((LiteralControl)Controls[0]).Text += sb.ToString();
// 增加在表單提交時,隱藏表單並顯示提示表格的指令碼
// 注意:是否進行指令碼事件,由頁面驗證控制項內容是否為空白決定
sb = new StringBuilder();
sb.Append("\n<script>");
sb.Append("\nfunction submitForm(form) {");
sb.Append("\n if(document.all.validation_summary_on_form_submit.innerHTML == '') {");
sb.Append("\n form.style.display='none';");
sb.Append("\n document.all.show_panel_on_submit.style.display='';");
sb.Append("\n }");
sb.Append("\n}");
sb.Append("\n</script>");
((LiteralControl)Controls[2]).Text += sb.ToString();
// 增加頁面驗證控制項,
// 表單提交時,可通過檢驗該控制項innerHTML來判斷提交是否合法
ValidationSummary vs = new ValidationSummary();
vs.ID = "validation_summary_on_form_submit";
vs.Attributes["style"] = "position:absolute;top:-1000;left:-1000";
form.Controls.Add(vs);
}
#endregion
}
// 修改記錄2 2010-09-14 朱潔 添加 RebuildHtml(),是否防止使用者多次提交頁面 結束
#endregion