C# Gridview 全選/反選 搭配EMail

摘要:C# Gridview 全選/反選 搭配EMail

前面:

 

                   <asp:TemplateField>
                        <HeaderTemplate>
                            <asp:CheckBox ID="CheckAll" runat="server" onclick="javascript: SelectAllCheckboxes(this);"
                                Text="全選" ToolTip="按一次全選,再按一次取消全選" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="CheckBox1" runat="server"  />
                        </ItemTemplate>
                    </asp:TemplateField>
 
grd下面 :
 
<script type="text/javascript">
            function SelectAllCheckboxes(oCheckbox) {
 
            var GridView1 = document.getElementById("<%=grdQM.ClientID %>");
            // alert(GridView1.rows[2].cells[0].innerHTML)
            for (i = 1; i < GridView1.rows.length; i++) {
                if ($.trim(GridView1.rows[i].cells[0].innerHTML) == null || $.trim(GridView1.rows[i].cells[0].innerHTML) == "") {
               
                } else {
                    GridView1.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked = oCheckbox.checked;
                }
            }
        }
    </script>
 
 
 
後台:
 
 
protected void btnSend_Click(object sender, EventArgs e)
    {
        List<string> lis = new List<string>();
        lis.Clear();
        int i;
 
        for (i = 0; i < this.grdQM.Rows.Count; i++)
        {
            if (((CheckBox)grdQM.Rows[i].FindControl("CheckBox1")).Checked)
            {
                lis.Add(grdQM.DataKeys[i].Value.ToString().Trim());
                //GridView1.DataKeys[i].Value.ToString() 可以抓到該列的DataKeys的值,我設定的是pk值
            }
        }
        if (lis.Count > 0)
        {
            try
            {
                SendEmail(lis);
                AlertMessage.ShowMessage(this, UpdatePanel1, "通知信件已寄出!");
            }
            catch( Exception ex)
            {
                AlertMessage.ShowMessage(this, UpdatePanel1, "通知信件失敗!");
            }
        }
        else
        {
            AlertMessage.ShowMessage(this, UpdatePanel1, "無勾選任何選項!");
        }
 
 
    }
 
 /// <summary>
    /// EMAIL內容
    /// </summary>
    /// <param name="list"></param>
    private void SendEmail(List<string> list)
    {
       // ReSetKey ReKey = new ReSetKey();//解密(和CSCLable解出一樣)
        foreach (string QMID in list)
        {
            StuDMVO myvo = new StuDMVO();
            string str = "";
            if (QMID.Trim().Length == 16)
            {
                myvo = QueryStu(QMID.Trim().Substring(0, 14));
                str= QueryCerType(QMID.Trim().Substring(14, 2));
            }
 
            Mail mail = new Mail();
            mail.SendFrom = "\"管理系統\" <" + System.Configuration.ConfigurationManager.AppSettings["SendFrom"] + ">";
            mail.Subject = "主旨";
            mail.Body = "親愛的 " + myvo.Stu_Cname.Trim() + " 您好:<br>您在...內容 <HTML>。 ";
            mail.SendToList = myvo.Stu_Email.Trim();
            mail.BCCList = ""; //附件
            mail.SendMail();
         
        }
    }
 
 
    /// <summary>
    /// Checkbox開合
    /// </summary>
    public void OpenCheckBox()
    {
        for (int i = 0; i < this.grdQM.Rows.Count; i++)
        {
            if (((Label)grdQM.Rows[i].FindControl("Label7")).Text.Trim() == "開合的條件")
            {
                grdQM.Rows[i].FindControl("CheckBox1").Visible = true;
            }
            else
            {
                grdQM.Rows[i].FindControl("CheckBox1").Visible = false;
            }
        }
 
 
    }