//删除
    protected void Button5_Click(object sender, EventArgs e)
    {
        try
        {
            int count = this.GridView1.Rows.Count;
            for (int i = 0; i < count; i++)
            {
                CheckBox chk =(CheckBox)this.GridView1.Rows[i].FindControl("Itemchk");
                
                if (chk.Checked)
                {
                    int id = Convert.ToInt32(this.GridView1.Rows[i].Cells[0].Text);
                    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["meetingConn"].ConnectionString);
                    conn.Open();
                    string sqlstr = "delete from meetroom where id='"+id+"'";
                    SqlCommand cmd = new SqlCommand(sqlstr,conn);
                    cmd.ExecuteNonQuery();
                    conn.Close();
                    Response.Write("<script>alert('删除成功');</script>");
                }
                this.DataBindMeetroom();
            }
        }
        catch
        { Response.Write("<script>alert('服务器忙,请一会再试');</script>");}上面是删除按钮的代码。这是前台的代码:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="EditRoom.aspx.cs" Inherits="EditRoom" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <table style="width: 491px; height: 87px;">
        <tr>
            <td align="center" style="width: 563px; color: white; background-color: #0066ff; height: 1px;">
                会议室管理--管理会议室</td>
        </tr>
        <tr>
            <td style="width: 563px; height: 98px;" align="center">
                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCreated="Gv_RowCreated" Width="538px" Height="136px" CellPadding="4">
                <Columns>
                <asp:BoundField DataField="id" HeaderText="编号" ReadOnly="True"/>
                <asp:BoundField DataField="roomname" HeaderText="会议室名称" ReadOnly="True" />
                <asp:BoundField DataField="roomaddr" HeaderText="会议室地点" ReadOnly="True" />
                <asp:BoundField DataField="roomcount" HeaderText="可容纳人数" ReadOnly="True" />
                <asp:TemplateField>
                <HeaderTemplate>
                编辑
                </HeaderTemplate>
                <ItemTemplate>
                <a href="ChangeRoom.aspx?id=<%#DataBinder.Eval(Container.DataItem,"id") %>">编辑</a>
                </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                <ItemTemplate>
                <asp:CheckBox ID="Itemchk" runat="server"/>
                </ItemTemplate>
                </asp:TemplateField>
                </Columns>
                    <RowStyle BackColor="White" />
                    <PagerStyle BackColor="White" />
                    <HeaderStyle BackColor="SkyBlue" />
                </asp:GridView>
            </td>
        </tr>
        <tr>
            <td style="width: 563px">
                共有<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>条记录,当前是第<asp:Label
                    ID="Label2" runat="server" Text="1" Width="15px"></asp:Label>/<asp:Label ID="Label3" runat="server"
                        Text="Label"></asp:Label>页<asp:Button ID="Button1" runat="server" Text="首页" OnClick="Button1_Click" />
                <asp:Button ID="Button2" runat="server" Text="上页" OnClick="Button2_Click" />
                <asp:Button ID="Button3" runat="server" Text="下页" OnClick="Button3_Click" />
                <asp:Button ID="Button4" runat="server" Text="末页" OnClick="Button4_Click" /></td>
        </tr>
        <tr>
            <td style="width: 563px; height: 20px;">
                &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;<asp:CheckBox
                    ID="CheckBox1" runat="server" Text="全选" Height="22px"  AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged" Width="54px" />
                &nbsp;
                <asp:Button ID="Button5" runat="server" Text="删除选定项" OnClick="Button5_Click" /></td>
        </tr>
    </table>
</asp:Content>每次一点击删除按钮的时候,CheckBox选定的项自动取消选定的,而且删除时间也没有执行,可是
去掉 if (chk.Checked)这句以后,可以执行删除,但是第一次执行时,删除了所有的id为基数的项,以后在执行的时候则按顺序一条一条的执行。

解决方案 »

  1.   

    this.DataBindMeetroom(); 移到for外面试下
      

  2.   

    this.DataBindMeetroom();这个事件移出FOR循环外,而且你这样的写法,在同时删除两条或两条以上记录的时候,你会发现你那个弹出消息就根据你删除的数据条数而弹出多少次。
      

  3.   

    思路:通过javascript控制选择,将选择的记录放在一个hidden类型的input中.删除时用Delete From meetroom where id in ({0}) 语句. 下面代码测试通过.
    use office
    go
    create table meetroom (id int identity(1,1),roomname nvarchar(20),roomaddr nvarchar(30),roomcount int)
    goinsert into meetroom
    select '计算机2000-1班' as roomname,'教研楼A栋301室' as roomaddr,30 as roomcount
    union 
    select '计算机2000-2班' as roomname,'教研楼A栋302室' as roomaddr,35 as roomcount
    union 
    select '计算机2000-3班' as roomname,'教研楼A栋303室' as roomaddr,40 as roomcount<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EditRoom.aspx.cs" Inherits="EditRoom" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script language="javascript" type="text/javascript">
            var hidCtlId = "<%=hidSelectId.ClientID%>";        function checkSelectId() {            var hidValId = document.getElementById(hidCtlId);
                if (hidValId.value.length == 0) {
                    alert("请先选择要操作的数据");
                    return false;
                }
                return true;
            }        function chkSelectAll(spanckb) {
                var thebox = spanckb;
                oState = thebox.checked;            oItem = document.getElementsByTagName("input");            for (i = 0; i < oItem.length; i++) {
                    if (oItem[i].type == "checkbox" & oItem[i].id != thebox.id) {
                        if (oItem[i].checked != oState)
                            oItem[i].click();
                    }
                }
            }        function setSelectVal(spanckb, id) {
                var thebox = spanckb;
                oState = thebox.checked;
                if (oState) {
                    attachVal(id);
                }
                else {
                    detachVal(id);
                }
            }        function attachVal(id) {
                var hidValId = document.getElementById(hidCtlId);
                var selValue = ',' + hidValId.value;
                temp = ',' + id + ',';
                // 不存在则添加
                if (selValue.indexOf(temp) == -1) {
                    hidValId.value = hidValId.value + id + ',';
                }
            }        function detachVal(id) {
                var hidValId = document.getElementById(hidCtlId);
                var selValue = ',' + hidValId.value;
                temp = ',' + id + ',';
                selValue = selValue.replace(temp, ',');
                hidValId.value = selValue.substr(1);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <table style="width: 491px; height: 87px;"> 
            <tr> 
                <td align="center" style="width: 563px; color: white; background-color: #0066ff; height: 1px;"> 
                    会议室管理--管理会议室 </td> 
            </tr> 
            <tr> 
                <td style="width: 563px; height: 98px;" align="center"> 
                    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                        OnRowCreated="Gv_RowCreated" Width="538px" Height="136px" CellPadding="4" 
                        onrowdatabound="GridView1_RowDataBound"> 
                    <Columns> 
                    <asp:BoundField DataField="id" HeaderText="编号" ReadOnly="True"/> 
                    <asp:BoundField DataField="roomname" HeaderText="会议室名称" ReadOnly="True" /> 
                    <asp:BoundField DataField="roomaddr" HeaderText="会议室地点" ReadOnly="True" /> 
                    <asp:BoundField DataField="roomcount" HeaderText="可容纳人数" ReadOnly="True" /> 
                    <asp:TemplateField> 
                    <HeaderTemplate> 
                    编辑 
                    </HeaderTemplate> 
                    <ItemTemplate> 
                    <a href="ChangeRoom.aspx?id= <%#DataBinder.Eval(Container.DataItem,"id") %>">编辑 </a> 
                    </ItemTemplate> 
                    </asp:TemplateField> 
                    <asp:TemplateField> 
                    <ItemTemplate> 
                    <asp:CheckBox ID="Itemchk" runat="server"/> 
                    </ItemTemplate> 
                    </asp:TemplateField> 
                    </Columns> 
                        <RowStyle BackColor="White" /> 
                        <PagerStyle BackColor="White" /> 
                        <HeaderStyle BackColor="SkyBlue" /> 
                    </asp:GridView> 
                </td> 
            </tr> 
            <tr> 
                <td style="width: 563px"> 
                    共有 <asp:Label ID="Label1" runat="server" Text="Label"> </asp:Label>条记录,当前是第 <asp:Label 
                        ID="Label2" runat="server" Text="1" Width="15px"> </asp:Label>/ <asp:Label ID="Label3" runat="server" 
                            Text="Label"> </asp:Label>页 <asp:Button ID="Button1" runat="server" Text="首页" OnClick="Button1_Click" /> 
                    <asp:Button ID="Button2" runat="server" Text="上页" OnClick="Button2_Click" /> 
                    <asp:Button ID="Button3" runat="server" Text="下页" OnClick="Button3_Click" /> 
                    <asp:Button ID="Button4" runat="server" Text="末页" OnClick="Button4_Click" /> </td> 
            </tr> 
            <tr> 
                <td style="width: 563px; height: 20px;"> 
                    <input id="hidSelectId" runat="server" type="hidden" />
                    &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <asp:CheckBox 
                        ID="CheckBox1" runat="server" Text="全选" Height="22px"  Width="54px" /> 
                    &nbsp; 
                    <asp:Button ID="Button5" runat="server" Text="删除选定项" OnClick="Button5_Click" /> </td> 
            </tr> 
        </table>     </div>
        </form>
    </body>
    </html>
      

  4.   

    后台代码:using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;public partial class EditRoom : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // 全选
                CheckBox1.Attributes.Add("onclick", "chkSelectAll(this);");
                // 加载数据
                LoadData();
            }
        }    private void LoadData()
        {
            GridView1.DataSource = GetDataList();
            GridView1.DataBind();
        }
        /// <summary>
        /// 获取数据
        /// </summary>
        /// <returns></returns>
        private DataTable GetDataList()
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = ConfigurationManager.ConnectionStrings["meetingConn"].ConnectionString;
            con.Open();
            string sqlSelect = "Select * From meetroom";
            SqlDataAdapter adapter = new SqlDataAdapter(sqlSelect, con);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            return dt;
        }    private static string msg = "<script>alert('{0}');</script>";    /// <summary>
        /// 提示信息
        /// </summary>
        /// <param name="strMsg"></param>
        private void MessageShow(string strMsg)
        {
            Response.Write(string.Format(msg, strMsg));
        }    /// <summary>
        /// 删除选择记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button5_Click(object sender, EventArgs e)
        {
            if (hidSelectId.Value.Length == 0)
            {
                MessageShow("请选择要删除的记录.");
                return;
            }
            try
            {
                SqlConnection con = new SqlConnection();
                con.ConnectionString = ConfigurationManager.ConnectionStrings["meetingConn"].ConnectionString;
                con.Open();
                string sqlDelete = string.Format("Delete From meetroom where id in ({0})", hidSelectId.Value.TrimEnd(','));
                SqlCommand cmd = new SqlCommand(sqlDelete);
                cmd.Connection = con;
                cmd.ExecuteNonQuery();
                // 重新加载数据
                LoadData();
                MessageShow("删除成功.");
            }
            catch(Exception ex)
            {
                MessageShow(ex.Message);
            }
        }    protected void Gv_RowCreated(object sender, GridViewRowEventArgs e)
        {
            // 
        }    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // 单条记录选择
                CheckBox chkSelect = e.Row.FindControl("Itemchk") as CheckBox;
                DataRowView drv = e.Row.DataItem as DataRowView;
                string id = drv["Id"].ToString();
                chkSelect.Attributes.Add("onclick", string.Format("setSelectVal(this,'{0}');", id));
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {    }
        protected void Button2_Click(object sender, EventArgs e)
        {    }
        protected void Button3_Click(object sender, EventArgs e)
        {    }
        protected void Button4_Click(object sender, EventArgs e)
        {    }
    }
      

  5.   

    if(chk.Checked==true)
    你试着将上面的if语句修改一下