VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 907|回复: 9

gridview 批量删除,为什么删除不了!!!

[复制链接]

3

主题

11

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-3-4 01:00:01 | 显示全部楼层 |阅读模式
gridview 批量删除,我调试发现CheckBox2传不过去,选中所有的CheckBox2后,在点删除按钮后,发现CheckBox2还是为没有选中,为什么传不过来啊,??

我把代码贴出来各位帮看看啊!

<body>
    <form id="form1" runat="server">
    <div>
   
<table border="0" width="530"><tr><td style="width:5%" align="center">
              <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox1_CheckedChanged" /></td><td style="width:10%" align="center">更新</td><td style="width:15%" align="center">名称</td><td style="width:25%" align="center">图片</td><td style="width:20%" align="center">图片大小</td><td style="width:25%" align="center">上传日期</td></tr></table>
          <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#CC9966" BorderWidth="1px" CellPadding="4"
DataKeyNames="pid" HorizontalAlign="Center"
Width="530" BorderStyle="None" ShowHeader="False" AllowPaging="True">
<FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
                <Columns>
                <asp:TemplateField >
<ItemStyle HorizontalAlign="Center" Width="5%" />
<ItemTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" Width="10%" />
<ItemTemplate>
更新
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" Width="15%" />
<ItemTemplate>
<%# Eval("pname")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" Width="24%" />
<ItemTemplate>
<img src="<%# Eval("paddr")%>" alt="" width="50" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" Width="20%" />
<ItemTemplate>
<%# Eval("pdx")%>字节
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" Width="25%" />
<ItemTemplate>
<%# Eval("pdate")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" Width="1%" />
<ItemTemplate>
        <asp:Label Text='<%# Eval("pid")%>' Visible="False" runat="server" Width="80%" ID="lblColumn" />
</ItemTemplate>
</asp:TemplateField>
                </Columns>
            </asp:GridView>
            
               <table border="0" width="530"><tr><td>
          <asp:Button ID="Button1" runat="server" Text="全选" OnClick="Button1_Click" />&nbsp;
          <asp:Button ID="Button2" runat="server" OnClientClick=" javascript:return confirm('您确认要删除所选择的图片吗?')" Text="删除" OnClick="Button2_Click" />&nbsp;
          <asp:Button ID="Button3" runat="server" OnClientClick=" javascript:return confirm('您确认要删除此相册吗?')" Text="删除此相册" /></td></tr></table>
  <asp:LinkButton ID="btnFirst" CommandArgument="first" OnClick="PagerButtonClick"
                            runat="server">首 页</asp:LinkButton>
                        <asp:LinkButton ID="btnPrev" CommandArgument="prev" OnClick="PagerButtonClick" runat="server">上一页</asp:LinkButton>
                        <asp:LinkButton ID="btnNext" CommandArgument="next" OnClick="PagerButtonClick" runat="server">下一页</asp:LinkButton>
                        <asp:LinkButton ID="btnLast" CommandArgument="last" OnClick="PagerButtonClick" runat="server">尾 页</asp:LinkButton>
                        <asp:Label ID="LblCurrentIndex" runat="server"></asp:Label>
                        <asp:Label ID="LblPageCount" runat="server"></asp:Label>
                        <asp:Label ID="LblRecordCount" runat="server"></asp:Label>
            </div>
    </form>
</body>
回复

使用道具 举报

3

主题

11

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-5-16 09:45:02 | 显示全部楼层
protected void Button1_Click(object sender, EventArgs e)
    {
        if (Button1.Text == "全选")
        {
            foreach (GridViewRow row in GridView1.Rows)
            {
                CheckBox CheckBox2 = (CheckBox)row.Cells[0].FindControl("CheckBox2");
                CheckBox2.Checked = true;
               
            }
            Button1.Text = "全部不选";
        }
        else
        {
            foreach (GridViewRow row in GridView1.Rows)
            {
                CheckBox CheckBox2 = (CheckBox)row.Cells[0].FindControl("CheckBox2");
                CheckBox2.Checked = false;
            }
            Button1.Text = "全选";
        }


    }


protected void Button2_Click(object sender, EventArgs e)
    {
foreach (GridViewRow row in GridView1.Rows)
        {
            CheckBox CheckBox2 = (CheckBox)row.Cells[0].FindControl("CheckBox2");
            if (CheckBox2.Checked == true)
            {
                string connStr = ConfigurationManager.AppSettings["LawConnStr"];
                SqlConnection conn = new SqlConnection(connStr);
                SqlCommand comm = new SqlCommand();
                comm.Connection = conn;
                comm.CommandText = "delete from pictures_pic where pid='" + row.Cells[2].Text + "' ";
                conn.Open();
                comm.ExecuteNonQuery();
                conn.Close();
            }
        }

    }


    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (this.CheckBox1.Checked == true)
        {
            foreach (GridViewRow row in GridView1.Rows)
            {
                CheckBox CheckBox2 = (CheckBox)row.Cells[0].FindControl("CheckBox2");
                CheckBox2.Checked = true;
            }
            Button1.Text = "全部不选";
        }
        else
        {
            foreach (GridViewRow row in GridView1.Rows)
            {
                CheckBox CheckBox2 = (CheckBox)row.Cells[0].FindControl("CheckBox2");
                CheckBox2.Checked = false;
            }
            Button1.Text = "全选";
        }
    }
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-5-18 17:15:01 | 显示全部楼层
你是不是在PAGE_LOAD事件里又绑定了一遍数据?
回复

使用道具 举报

3

主题

11

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-5-19 17:15:01 | 显示全部楼层
我是这样写的
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GridViewBind();
        }
    }

可以吗?
回复

使用道具 举报

0

主题

9

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-5-21 12:30:01 | 显示全部楼层
你单步跟踪下吧
另外从效率的角度,建议不要把程序写成这样
回复

使用道具 举报

3

主题

11

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-5-21 17:30:02 | 显示全部楼层
另外从效率的角度,建议不要把程序写成这样

呵呵,要怎么写比较好啊?
回复

使用道具 举报

3

主题

11

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-5-29 09:00:01 | 显示全部楼层
在GridView里加入下面代码

<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" Width="12%" />
<ItemTemplate>
<asp:LinkButton ID="Link1" OnCommand="Link1_clink" runat="server" Text="设为封面"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

后台是
protected void Link1_clink(object sender, EventArgs e)
    {
     }

那我在后台怎么获取到点击此按钮的该记录的ID啊??
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-2 08:15:01 | 显示全部楼层
CheckBox CheckBox2 = (CheckBox)row.Cells[0].FindControl("CheckBox2");换成
CheckBox CheckBox2 = (CheckBox)GridView1.Rows[0].FindControl("CheckBox2");试试
回复

使用道具 举报

0

主题

9

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-7-22 10:15:01 | 显示全部楼层
protected void Button2_Click(object sender, EventArgs e)
    {
foreach (GridViewRow row in GridView1.Rows)
        {
            CheckBox CheckBox2 = (CheckBox)row.Cells[0].FindControl("CheckBox2");
            if (CheckBox2.Checked == true)
            {
                string connStr = ConfigurationManager.AppSettings["LawConnStr"];
                SqlConnection conn = new SqlConnection(connStr);
                SqlCommand comm = new SqlCommand();
                comm.Connection = conn;
                comm.CommandText = "delete from pictures_pic where pid='" + row.Cells[2].Text + "' ";
                conn.Open();
                comm.ExecuteNonQuery();
                conn.Close();
            }
        }

    }
这是一点,可以用类似这样的查询啊:
update ... set ...= ...
where id in (1,2,...)
一次把它们搞定

另外,应当尽量减少PostBack的次数,以增强用户体验.像全选之类的,就应该让JS去实现.
回复

使用道具 举报

4

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-8-25 17:15:01 | 显示全部楼层
怎么老提示if (CheckBox2.Checked == true)未将对象引用到实例化呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表