一页面:
<form id="form1" runat="server">
<input type="hidden" runat="server" id="hidSelContract" name="hidSelContract" value="GridView1_ctl02_lblStatus,1" />
<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server">
</asp:ScriptManager>
...
<asp:GridView ID="GridView1" runat="server" AllowPagerable="False"
AllowChangeCellWidth="True" AutoGenerateColumns="False"
CellPadding="0" DataKeyNames="ID" GridLines="None"
CssClass="gridviewStyle" JumpButtonHeight="25px" JumpButtonWidth="25px" >
<Columns>
...
<asp:TemplateField HeaderText="群发操作">
<ItemTemplate>
<input type="button" οnclick='<%# string.Format("return CheckState({0},{1})",Eval("Status").ToString().ToString(),Eval("ID").ToString().ToString()) %>'
class="buttonblue" value="发送"/>
</ItemTemplate>
<HeaderStyle CssClass="gridview_headerStyle" />
<ItemStyle CssClass="gridview_itemStyle" HorizontalAlign="Center" Width="40px" />
</asp:TemplateField>
二javascript:
<script language="javascript" type="text/javascript">
var intervalID = 0;
//群发邮件时审核状态验证
function CheckState(strStateID,appID) {
if (strStateID == "0" || strStateID == "1" || strStateID == "2" || strStateID == "4") {
alert("提示:IT审核通过后才能群发邮件!");
return false;
}
else if (strStateID == "3") {//IT审核通过
var srcE = event.srcElement;
var span = srcE.parentElement.parentElement.children[4].children[0];
var hidSelContract = document.getElementById('hidSelContract');
hidSelContract.value = span.id + "," + appID;
//执行群发邮件发送
PageMethods.SendMassMail(appID);
//span.innerHTML = "发送中";
//每秒钟更新发送数据
intervalID = window.setInterval("GetSendState()", 1000);
return false;
}
else if (strStateID == "5") {
alert("提示:群发邮件已在发送中!");
return false;
}
else if (strStateID == "6") {
alert("提示:群发邮件已发送完成!");
return false;
}
}
...
//群发邮件发送并及时更新发送数据
function GetSendState() {
var hidSelContract = document.getElementById('hidSelContract');
PageMethods.GetSendState(hidSelContract.value, ShowMessage);
}
//AJAX返回值:lblStatus.ClientID,发送数据(已发送/发送总数),发送状态
function ShowMessage(result) {
if (result != "") {
var arr = result.split(",");
var lblState = document.getElementById("" + arr[0] + "");
var hidSelContract = document.getElementById('hidSelContract');
if (arr[2] == "6") {//群发邮件完成
window.clearInterval(intervalID);
if (lblState != null)
lblState.innerHTML = "发送完成";
var hidSelContract = document.getElementById('hidSelContract');
hidSelContract.value = "";
return;
}
else if (arr[2] == "7") {//邮件群发状态表,群发异常
window.clearInterval(intervalID);
hidSelContract.value = "";
if (lblState != null)
lblState.innerHTML = "发送出错";
else
alert("提示:群发邮件出错!");
return;
}
lblState.innerHTML = arr[1];
}
}
</script>
三服务端:
/// <summary>
/// 执行群发邮件发送
/// </summary>
/// <param name="applyID">群发邮件申请单ID</param>
[System.Web.Services.WebMethod]
public static void SendMassMail(string applyID)
{
EmailProxy.StartSendMail(applyID, 415, "TcpEmailService");
}
/// <summary>
/// 得到实时群发邮件状态
/// </summary>
/// <param name="hidSelContractValue">lblStatus.ClientID,群发邮件申请单ID(applyID)</param>
/// <returns></returns>
[System.Web.Services.WebMethod]
public static string GetSendState(string hidSelContractValue)
{
hidSelContractValue = hidSelContractValue.Trim();
if (string.Empty.Equals(hidSelContractValue))
return string.Empty;
string[] paras = hidSelContractValue.Split(',');
if (paras.Length < 2)
{
return string.Empty;
}
string applyID = paras[1];
StringBuilder value=new StringBuilder();
if (!string.Empty.Equals(applyID))
{
MassMailingApplyBLL bll2 = new MassMailingApplyBLL();
var entity = bll2.GetEntity(long.Parse(applyID));
if (entity == null) return string.Empty;
//此群发邮件发送完成
value.Append(paras[0]);
value.Append(",");
if (entity.MassMailingSendState != null)
{
value.Append(entity.MassMailingSendState.SendCount.ToString());
value.Append("/");
value.Append(entity.MassMailingSendState.TotalCount.ToString());
value.Append(",");
value.Append(entity.Status);
}
else//邮件群发状态表无记录
{
value.Append("发送出错");
value.Append(",");
value.Append("7");
}
}//返回值:lblStatus.ClientID,申请单ID,发送状态
return value.ToString();
}