一个关于datagrid批量删除的问题
问题描述:
datagrid分页显示,在第二页选择一些数据后(注:使用的checkbox),点删除返回的是第一页的同行数据,举例如下,
第一页:
口 id=1
口 id=2
口 id=3
第二页
口 id=4
口 id=5
口 id=6
当我选择id=4和id=5两条数据后,返回的却是id=1和id=2两条数据,不知如何解决。请帮忙看看!谢谢!
涉及代码:
前台代码:
<asp:datagrid id="DataList" runat="server" OnPageIndexChanged="change_page_index" EnableViewState="False" PageSize="12" BackColor="White" BorderStyle="None" BorderWidth="0px" BorderColor="#999999" CellPadding="3" GridLines="Vertical" AutoGenerateColumns="False" Width="100%" AllowPaging="True">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
<AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
<ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084"></HeaderStyle>
<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="选定">
<HeaderStyle HorizontalAlign="Center" Width="5%"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<INPUT type=checkbox id=checkbox value='<%# DataBinder.Eval(Container.DataItem,"Data_Id") %>' runat=server NAME="checkbox">
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderStyle HorizontalAlign="Center" Width="5%"></HeaderStyle>
<ItemStyle HorizontalAlign="Left"></ItemStyle>
<ItemTemplate>
<%# ShowImg(DataBinder.Eval(Container.DataItem,"img")) %>
<div id="img" runat="server"></div>
</ItemTemplate>
</asp:TemplateColumn>
<asp:HyperLinkColumn DataNavigateUrlField="Data_Id" DataNavigateUrlFormatString="hits.aspx?id={0}" DataTextField="Data_Title" HeaderText="标题">
<HeaderStyle Width="55%"></HeaderStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn DataField="Data_Hits" HeaderText="点击数">
<HeaderStyle HorizontalAlign="Center" Width="10%"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:TemplateColumn HeaderText="发布日期">
<HeaderStyle HorizontalAlign="Center" Width="10%"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Data_Pbdate", "{0:d}") %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="附件">
<HeaderStyle Width="5%"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<%# ShowAttach(DataBinder.Eval(Container.DataItem,"attach")) %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="管理">
<HeaderStyle HorizontalAlign="Center" Width="10%"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<a href="<%# DataBinder.Eval(Container.DataItem, "Data_id", "newsEdit.aspx?id={0}") %>">
修改</a> | <a href="<%# DataBinder.Eval(Container.DataItem, "Data_id", "Del.aspx?id={0}") %>">
删除</a>-->
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="Control" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
<TABLE borderColor="buttonface" cellSpacing="1" cellPadding="1" width="100%" bgColor="gainsboro" border="0">
<TR>
<TD style="FONT-SIZE: 9pt" align="middle" height="26"><span id="selectall" style="CURSOR: hand" onclick="selectAll()">全部选定</span>
<asp:linkbutton id="Del_Selected" runat="server" EnableViewState="False">删除选定</asp:linkbutton>
<span style="CURSOR: hand" onclick="javascript:window.navigate('addNews.aspx');">增加新闻</span></TD>
</TR>
</TABLE>
后台代码:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
DataConnect(1)
If Not IsPostBack Then
Try
Sort_bind() '#加载主栏目
newslist_bind(1)
Catch err As Exception
End Try
Else
newslist_bind(1)
End If
DataConnect(0)
End Sub
Sub newslist_bind(ByVal load_type As String)
Dim Ds As New DataSet()
Dim Sql
Dim objAdapter
Try
If load_type = 0 Then
Sql = "SELECT Data_Id,Data_Title,Data_Pbdate,Data_Hits,Topic_id,Sort_id,Column_id,img,attach FROM Info_record_data ORDER BY Data_Id DESC"
Else
Sql = "SELECT Data_Id,Data_Title,Data_Pbdate,Data_Hits,Topic_id,Sort_id,Column_id,img,attach FROM Info_record_data WHERE Column_id=" & columnList.SelectedItem.Value & " ORDER BY Data_Id DESC"
End If
objAdapter = New SqlDataAdapter(Sql, link)
objAdapter.Fill(Ds, "Info_record_data")
'设置DataGrid显示样式
DataList.Style.Add("font-size", "9pt")
DataList.DataSource = Ds.Tables("Info_record_data").DefaultView
DataList.DataBind()
Catch err As Exception
Finally
unloadThis(Ds)
unloadThis(objAdapter)
End Try
End Sub
Private Sub Del_Selected_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Del_Selected.Click
'Dim sql As String = "DELETE FROM Info_record_data WHERE Data_Id<>null"
Dim list As ArrayList = New ArrayList()
Dim tmpNewsId As String
Dim i As Integer = 0
For i = 0 To DataList.Items.Count - 1
Dim chkbox As HtmlInputCheckBox = DataList.Items(i).Cells(0).FindControl("checkbox")
If chkbox.Checked Then
Dim chkbox_value = chkbox.Value
tmpNewsId = tmpNewsId & chkbox_value & ","
End If
Next
If Len(Trim(tmpNewsId)) > 1 Then
tmpNewsId = Left(tmpNewsId, Len(tmpNewsId) - 1)
Response.Redirect("del.aspx?id=" & tmpNewsId & "")
End If
End Sub