邮件上一封与下一封功能

2017-3-14

在早上的时候想把邮件上一封与下一封功能完成了。

因为上下功能的按钮是用input type=image做的,所以本想用HTML 服务器控件完成,结果掉入坑里了,当 input=button  的时候是能够触发onserverclick 服务端的事件处理,所以想用同样的方法,结果搞了好久不行,最后发现原来是 type为 image的时候不能触发服务端事件。

protected void changeEmail(object sender, EventArgs e)

{

    HtmlInputImage Btn = sender as HtmlInputImage;

    string sqlString = "";

//取得与当前 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 发送请求,接收数据并处理,此处使用 jq 的POST 方法及按钮代码


按钮


脚本

     为什么要给点击后的按钮设置失效?

        因为在点击下一封后,请示数据,这个过程是异步的,所以用户仍然可以点击页面上任何有效的部分,如果当前请求还在进行中,那就会发生数据库错误,所以此处禁用按钮。

至于js 中的first 与last 是当前的所显示邮件的最大与最小 ID, 用于判断是否请求的邮件超出范围。


这就是大概的效果图了

推荐阅读更多精彩内容