extaspnet中grid全选批量删除的问题

xiaozhang1528008 2013-06-22 06:04:41
我给grid的pagesize设置为3,然后删除事件的代码如下
protected void btnDelete_Click(object sender, EventArgs e)
{
try
{
int m = 0;
string sql = "Id in (";
if (Grid1.SelectedRowIndexArray.Length > 0)
{
foreach (int row in Grid1.SelectedRowIndexArray)
{
if (m > 0)
{

sql += ",";
}
sql += Grid1.DataKeys[row][0].ToString();
m = m + 1;
}

sql += ")";

if (cbll.Delete(sql))
{
Grid1.SelectedRowIndexArray = null;
if (Label1.Text == "Search")
{
GetDataBind("Search");
}
else
{
GetDataBind("");
}
}
}
else
{
btnDelete.OnClientClick = Alert.GetShowReference("没有可删除的数据");
}
}
catch (Exception ex)
{
Alert.Show(ex.ToString());
}
}
问题就是比如我是在分页的第3页中删除某一条,但是它却都是去删第1页的,这事为什么在呢,我是按书上的代码写的,谢谢。
...全文
195 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanshi_zhang 2013-07-01
  • 打赏
  • 举报
回复
可以到官方论坛提问: http://fineui.com/bbs
mnrs 2013-06-24
  • 打赏
  • 举报
回复
翻页后需要加入PageIndex 我写一个示例给你看看 首先建立一个aspx页面,内容如下
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridTest.aspx.cs" Inherits="WebTest.GridTest" %>

<%@ Register Assembly="ExtAspNet" Namespace="ExtAspNet" TagPrefix="ext" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title />
</head>
<body>
    <form id="form" runat="server">
        <ext:PageManager ID="pageManager" runat="server" />  
        <ext:Grid ID="gdTest" runat="server" EnableRowNumber="true" Title="Number" AllowPaging="True" PageSize="3" IsDatabasePaging="true" OnPageIndexChange="gdTest_PageIndexChange">
            <Columns>
                <ext:BoundField Width="60px" DataField="id" HeaderText="Id" />
            </Columns>
        </ext:Grid>
        <ext:Button ID="btnDelete" runat="server" Text="Delete" OnClick="btnDelete_Click" />
    </form>
</body>
</html>
然后在生成的aspx.cs里面加入下列代码
using System;
using System.Data;
using System.Web.UI;
using System.Collections.Generic;

using ExtAspNet;

namespace WebTest
{
    public partial class GridTest : Page
    {
        private static List<int> testInts;
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindPage();
            }
        }

        private void BindPage()
        {
            if (testInts == null)
            {
                testInts = new List<int>();

                for (int i = 0; i < 20; i++)
                {
                    testInts.Add(i);
                }
            }

            var dataTable = new DataTable();
            dataTable.Columns.Add(new DataColumn("Id", typeof(int)));

            int startIndex = gdTest.PageIndex * gdTest.PageSize;

            for (int i = startIndex; i < startIndex + gdTest.PageSize && i < testInts.Count - 1; i++)
            {
                DataRow row = dataTable.NewRow();

                row["Id"] = testInts[i];
                dataTable.Rows.Add(row);
            }

            gdTest.DataSource = dataTable;
            gdTest.DataBind();

            gdTest.RecordCount = testInts.Count;
        }

        protected void gdTest_PageIndexChange(object sender, GridPageEventArgs e)
        {
            gdTest.PageIndex = e.NewPageIndex;
            BindPage();
        }

        protected void btnDelete_Click(object sender, EventArgs e)
        {
            foreach (int row in gdTest.SelectedRowIndexArray)
            {
                testInts.RemoveAt(gdTest.PageSize * gdTest.PageIndex + row);
            }

            BindPage();
        }
    }
}
你一看就知道了吧
xiaozhang1528008 2013-06-23
  • 打赏
  • 举报
回复
就是 批量删除的这边 foreach (int row in Grid1.SelectedRowIndexArray) { if (m > 0) { sql += ","; } sql += Grid1.DataKeys[row][0].ToString(); 这个获取的是当前选中行的DataKey 比如我选中第一页的第1条数据 嗯没错获取到了DataKey 但是我翻页后选中的是第二页的第1条数据 依然获取的是第一页的当前第一条数据的DataKey m = m + 1; } 求详细的讲解 解决方式
xiaozhang1528008 2013-06-22
  • 打赏
  • 举报
回复
调试了下,看到Grid1.SelectedRowIndexArray这句的值老是为0,这样它删的就是第一页的第一条了,但是不知道为什么老是为0

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧