解决方案 »

  1.   

    CheckBox多选绑定GridView显示,实现批量删除和更新信息示例
    //GridView设置
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound" OnSelectedIndexChanging="GridView1_SelectedIndexChanging" Font-Size="9pt" AllowPaging="True" EmptyDataText="没有相关数据可以显示!" OnPageIndexChanging="GridView1_PageIndexChanging" CellPadding="4" ForeColor="#333333" GridLines="None">
                    <Columns>
                         <asp:TemplateField>
                                    <ItemTemplate>
                                        <asp:CheckBox ID="cbSingleOrMore" runat="server" />
                                    </ItemTemplate>
                          </asp:TemplateField>
                        <asp:BoundField DataField="id" HeaderText="信息ID" />
                        <asp:BoundField DataField="name" HeaderText="信息主题" />
                        <asp:BoundField DataField="type" HeaderText="信息分类" />
                        <asp:BoundField DataField="content" HeaderText="发布内容" />
                        <asp:BoundField DataField="userName" HeaderText="发布人" />
                        <asp:BoundField DataField="lineMan" HeaderText="联系人" />
                        <asp:BoundField DataField="issueDate" HeaderText="发布时间" 
                            DataFormatString="{0:d}" />
                    </Columns>
                    <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                    <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
                    <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
                    <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Right" />
                    <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                    <AlternatingRowStyle BackColor="White" />
                </asp:GridView>
    //CheckBox设置
    <asp:CheckBox ID="cbAll" runat="server" AutoPostBack="True" 
                Font-Size="9pt" OnCheckedChanged="cbAll_CheckedChanged"
                            Text="全选/反选" />
                        <asp:Button ID="btnDeleteMore" runat="server" Font-Size="9pt" 
                Text="部分删除或全部删除" OnClick="btnDeleteMore_Click" onload="btnDeleteMore_Load" 
                Width="134px" /></td>
                        <asp:Button ID="btnRre" runat="server" Font-Size="9pt" Text="取消部分或全部选择" 
                OnClick="btnRre_Click" Width="126px" />
            <asp:Button ID="btnUpdateTime" runat="server" onclick="btnUpdateTime_Click" 
                Text="更新发布时间" />
    //cs页面功能设置
     SqlConnection sqlcon;
        string strCon = ConfigurationManager.AppSettings["conStr"];
        protected void Page_Load(object sender, EventArgs e)//加载绑定数据显示
        {
            if (!IsPostBack)
            {
                this.GV_DataBind();
            }    }
        public void GV_DataBind()
        {
            string sqlstr = "select * from tb_inf ";
            sqlcon = new SqlConnection(strCon);
            SqlDataAdapter da = new SqlDataAdapter(sqlstr, sqlcon);
            DataSet ds = new DataSet();
            sqlcon.Open();
            da.Fill(ds, "tb_inf");
            sqlcon.Close();
            this.GridView1.DataSource = ds;
            this.GridView1.DataKeyNames = new string[] { "id" };
            this.GridView1.DataBind();
            if (GridView1.Rows.Count > 0)
            {
                return;//有数据,不要处理
            }
            else//显示表头并显示没有数据的提示信息
            {
                StrHelper.GridViewHeader(GridView1);
            }
        }//codego.net/tags/11/1/
    //选择CheckBox
     protected void cbAll_CheckedChanged(object sender, EventArgs e)
        {
            for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
            {
                CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("cbSingleOrMore");
                if (cbAll.Checked == true)
                {
                    cbox.Checked = true;
                }
                else
                {
                    cbox.Checked = false;
                }
            }
        }
    //删除功能
     protected void btnDeleteMore_Click(object sender, EventArgs e)
        {
            sqlcon = new SqlConnection(strCon);//创建数据库连接
            SqlCommand sqlcom;//创建命令对象变量
            for (int i = 0; i <= GridView1.Rows.Count - 1; i++)//循环遍历GridView控件每一项
            {
                CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("cbSingleOrMore");//查找嵌套在GridView控件中的单选框
                if (cbox.Checked == true)//如果操作为选中状态
                {
                    string strSql = "delete from tb_inf where id=@id";//定义带参数的删除语句
                    if (sqlcon.State.Equals(ConnectionState.Closed))
                        sqlcon.Open();//打开数据加连接
                    sqlcom = new SqlCommand(strSql, sqlcon);//创建执行删除操作的命令对象
                    SqlParameter prame = new SqlParameter("@id", SqlDbType.Int, 4);//定义参数
                    sqlcom.Parameters.Add(prame);//添加参数
                    sqlcom.Parameters["@id"].Value = GridView1.DataKeys[i].Value.ToString();//参数赋值
                    if (sqlcom.ExecuteNonQuery() > 0)//判断删除是否成功
                    {
                        StrHelper.Alert("删除成功!");
                    }
                    else
                    {
                        StrHelper.Alert("删除失败!");
                    }
                    sqlcon.Close();//关闭数据库连接
                }
            }
            GV_DataBind();//重新绑定数据控件
        }
    //更新数据
     protected void btnUpdateTime_Click(object sender, EventArgs e)
        {
            sqlcon = new SqlConnection(strCon);//创建数据库连接
            SqlCommand sqlcom;//创建命令对象变量
            for (int i = 0; i <= GridView1.Rows.Count - 1; i++)//循环遍历GridView控件每一项
            {
                CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("cbSingleOrMore");
                if (cbox.Checked == true)
                {
                    string strSql = "Update tb_inf set issueDate=@UpdateTime where id=@id";
                    if (sqlcon.State.Equals(ConnectionState.Closed))
                        sqlcon.Open();//打开数据库连接
                    sqlcom = new SqlCommand(strSql, sqlcon);
                    SqlParameter[] prams = {
                                              new SqlParameter("@UpdateTime",SqlDbType.DateTime),
                                              new SqlParameter("@id",SqlDbType.Int,4)
                                          };
                    prams[0].Value = DateTime.Now;
                    prams[1].Value = GridView1.DataKeys[i].Value;
                    foreach (SqlParameter parameter in prams)
                    {
                        sqlcom.Parameters.Add(parameter);
                    }
                    if (sqlcom.ExecuteNonQuery() > 0)
                    {
                        StrHelper.Alert("更新成功!");
                    }
                    else
                    {
                        StrHelper.Alert("更新失败!");
                    }
                    sqlcon.Close();
                }
            }
            GV_DataBind();
        }
    //执行索引操作
    protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            string id = this.GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();
            sqlcon = new SqlConnection(strCon);
            SqlCommand com = new SqlCommand("select [check] from tb_inf where id='" + id + "'", sqlcon);
            sqlcon.Open();
            string count = Convert.ToString(com.ExecuteScalar());
            if (count == "False")
            {
                count = "1";
            }
            else
            {
                count = "0";
            }
            com.CommandText = "update tb_inf set [check]=" + count + " where id=" + id;
            com.ExecuteNonQuery();
            sqlcon.Close();
            this.GV_DataBind();
        }