2017-3-14
在早上的時候想把郵件上一封與下一封功能完成了。
因為上下功能的按鈕是用input type=image做的,所以本想用HTML 服務(wù)器控件完成,結(jié)果掉入坑里了,當(dāng) input=button ?的時候是能夠觸發(fā)onserverclick 服務(wù)端的事件處理华蜒,所以想用同樣的方法,結(jié)果搞了好久不行豁遭,最后發(fā)現(xiàn)原來是 type為 image的時候不能觸發(fā)服務(wù)端事件叭喜。
protected void changeEmail(object sender, EventArgs e)
{
? ? HtmlInputImage Btn = sender as HtmlInputImage;
? ? string sqlString = "";
//取得與當(dāng)前 id 相臨的上一封或下一封的郵件id
?if (Btn.ID.Contains("last"))
? ? ? ? sqlString = "select top 1 ID from IN_MAIL where ID>" + ID;
? ? else
? ? ? ?sqlString = "select top 1 ID from IN_MAIL where ID<" + ID+“ order by id desc”;
? ?Hashtable hs = Me.Maildb.SelectHashtable(sqlString);
? ? var newID = Convert.ToInt32(hs["ID"] + "");
? ? txid.Value = newID.ToString();
? ? QueryData(newID);
}
所以上面的代碼是不能用了,沒辦法就只能用js來提交了。
所以添加了個一般處理程序蓖谢,獲取方式大致與上面一致捂蕴。
? ? ? ?接著用js 發(fā)送請求,接收數(shù)據(jù)并處理闪幽,此處使用 jq 的POST 方法及按鈕代碼
? ? ?為什么要給點擊后的按鈕設(shè)置失效啥辨?
? ? ? ? 因為在點擊下一封后,請示數(shù)據(jù)沟使,這個過程是異步的委可,所以用戶仍然可以點擊頁面上任何有效的部分,如果當(dāng)前請求還在進行中腊嗡,那就會發(fā)生數(shù)據(jù)庫錯誤着倾,所以此處禁用按鈕。
至于js 中的first 與last 是當(dāng)前的所顯示郵件的最大與最小 ID燕少, 用于判斷是否請求的郵件超出范圍卡者。