c# - 使用 gridview 中的复选框获取删除的行数

标签 c# asp.net gridview

这里我想在标签中没有我检查和删除的列

我使用以下代码执行我的查询,即使用复选框删除 gridview 中的多个值

这是我的代码和脚本部分

 protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        grd_bnd();
    }
}
 private void grd_bnd()
{
 SqlConnection con = new        SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString);
    SqlCommand cmd = new SqlCommand("select * from student", con);
    con.Open();
    SqlDataAdapter adp = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    adp.Fill(ds);
    GridView1.DataSource = ds;
    GridView1.DataBind();
    con.Close();
}
protected void Button3_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        CheckBox checkbox1 = (CheckBox)row.FindControl("checkboxdelete");
        if (checkbox1.Checked)
        {
            int rollno = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value.ToString());
            //CheckBox checkbox1 = (CheckBox)row.FindControl("checkbox1");
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString);
            SqlCommand cmd = new SqlCommand("delete from student where rollno = @rollno ", con);
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.Add("@rollno", SqlDbType.Int).Value = rollno.ToString();
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            cmd.Dispose();
        }
    }
    grd_bnd();
}
}

这是脚本

      <asp:GridView ID="GridView1" runat="server" DataKeyNames="rollno" AllowSorting="true" AutoGenerateColumns="False" BackColor="White" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" CellPadding="4" >
        <Columns>
            <asp:TemplateField HeaderText="Select">
                <ItemTemplate>
                    <asp:CheckBox ID="checkboxdelete" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Name">
                <ItemTemplate>
                    <asp:Label ID="lblname" runat ="server" Text='<%#Eval("name") %>' /> 
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Roll No.">
                <ItemTemplate>
                    <asp:Label ID="lblrollno" runat ="server" Text='<%#Eval("rollno") %>' /> 
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Batch">
                <ItemTemplate>
                    <asp:Label ID="lblbatch" runat ="server" Text='<%#Eval("batch") %>' /> 
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Course">
                <ItemTemplate>
                    <asp:Label ID="lblcourse" runat ="server" Text='<%#Eval("course") %>' /> 
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        </gridview>
        <asp:Button ID="Button3" runat="server" Font-Bold="True" Text="Delete Selected" ForeColor="#000066" OnClick="Button3_Click" />
    <asp:Label ID="Label1" runat="server" ForeColor="#666666"></asp:Label>

我想获取在上面的标签,标签 1 中删除的实体数。

最佳答案

只需在循环之前添加一个计数

protected void Button3_Click(object sender, EventArgs e)
{
    int rows = 0;

    foreach (GridViewRow row in GridView1.Rows)
    {
        CheckBox checkbox1 = (CheckBox)row.FindControl("checkboxdelete");
        if (checkbox1.Checked)
        {
            int rollno = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value.ToString());
            //CheckBox checkbox1 = (CheckBox)row.FindControl("checkbox1");
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString);
            SqlCommand cmd = new SqlCommand("delete from student where rollno = @rollno ", con);
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.Add("@rollno", SqlDbType.Int).Value = rollno.ToString();
            con.Open();
            rows += cmd.ExecuteNonQuery(); //Can return 0 if no rows were deleted!
            con.Close();
            cmd.Dispose();
        }
    }
    grd_bnd();
    MessageBox.Show(String.Format("Rows affected {0}", rows);
}

关于c# - 使用 gridview 中的复选框获取删除的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25134704/

相关文章:

c# - 无法导入 wsdl :portType, wsdl :binding, wsdl:端口

android - 使用异步任务在 gridview 中加载图像,加载不正确

java - 在 GridView Android 中查找元素时需要帮助

javascript - 使用母版页和 Ajax 提交表单后返回页面顶部

c# - 无法使用C#连接到mysql数据库

c# - 如何通过重载使用泛型?

c# - 为什么 VS 2008 不在 String 类的 Intellisense 中显示扩展方法

c# - 如何使用 OpenXML 在 Word 文档中设置复选框值

java - 用于填充多个部分的 Android GridView 适配器

c# - RX 和异常处理