【发布时间】:2013-11-20 11:38:34
【问题描述】:
我有当前的事件序列,用户打开一个部门页面(aspx,后面带有 c# 代码)并出现大量按钮:
- 将查询结果传递到单个网格视图的查询按钮(此 工作正常)
- 发送电子邮件按钮,与查询按钮编号相同 (这也很好用)
- Export to excel 按钮,在按下查询按钮后,导出 gridview 内容到 excel(这也很好用)
但现在我正试图让应用程序的导航更专业,即带有错误消息,正如我上面提到的,用户必须先按下查询按钮,然后按下“导出”或“电子邮件”按钮,否则导出或附加的excel文件是空的,所以如果用户按下的第一个按钮不是查询按钮,其他2个按钮应该给出错误消息告诉用户先按下查询按钮,我也想显示一条消息告诉用户电子邮件已发送,我是否使用 CATCH 和 TRY 来完成此操作?或者可能隐藏其他按钮并仅在用户按下查询按钮后显示它们?我只是问这个,因为我的按钮已经有 catch 和 try 方法,所以我不知道如何继续
我会很感激一些示例代码,因为我是 C# 新手
这是我的网格视图代码
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"></asp:GridView>
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
Excel 按钮
protected void Buttonexcel_Click(object sender, EventArgs e)
{
try
{
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
Response.AddHeader("content-disposition", "attachment;filename=dados.xls");
StringWriter sWriter = new StringWriter();
HtmlTextWriter hWriter = new HtmlTextWriter(sWriter);
GridView1.RenderControl(hWriter);
Response.Output.Write(sWriter.ToString());
Response.Flush();
Response.End();
}
catch (Exception ex)
{
Label1.Text = ex.ToString();
}
}
电子邮件按钮
protected void Buttonmail_Click(object sender, EventArgs e)
{
fn_AttachGrid();
}
public void fn_AttachGrid()
{
StringWriter sWriter = new StringWriter();
HtmlTextWriter hWriter = new HtmlTextWriter(sWriter);
GridView1.RenderControl(hWriter);
MailMessage mail = new MailMessage();
mail.IsBodyHtml = true;
mail.To.Add(new MailAddress("receiver@domain.pt"));
mail.Subject = "Sales Report";
System.Text.Encoding Enc = System.Text.Encoding.ASCII;
byte[] mBArray = Enc.GetBytes(sWriter.ToString());
System.IO.MemoryStream mAtt = new System.IO.MemoryStream(mBArray, false);
mail.Attachments.Add(new Attachment(mAtt, "dad.xls"));
mail.Body = "Hi PFA";
SmtpClient smtp = new SmtpClient();
mail.From = new MailAddress("sender@gmail.com", "name");
smtp.Host = "smtp.gmail.com";
smtp.UseDefaultCredentials = true;
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
NetworkCred.UserName = "sender@gmail.com";
NetworkCred.Password = "password";
smtp.Credentials = NetworkCred;
smtp.EnableSsl = true;
smtp.Port = 587;
smtp.Send(mail);
}
【问题讨论】:
-
在序列动作看起来很酷之前禁用/隐藏按钮!
标签: c# asp.net excel gridview extract-error-message