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页的,这事为什么在呢,我是按书上的代码写的,谢谢。
...全文
216 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
ExtAspNet控件 v3.1.9源码 源码描述: 关于ExtAspNet 基于 ExtJS 的专业 ASP.NET 2.0 控件库,拥有原生的 AJAX 支持和华丽的UI效果。 ExtAspNet的使命 创建没有 JavaScript,没有 CSS,没有 UpdatePanel,没有 ViewState,没有 WebServices 的网站应用程序。 支持的浏览器 IE 7.0+、Firefox 3.6+、Chrome 3.0+、Opera 10.5+、Safari 3.0+ 源码有文示例和英文示例,以及帮助文档(存放在doc文件夹里)方便用户学习 更新信息 2012-08-18 v3.1.9 -修正other/addtab.aspx示例的JS错误和BoundField使用Tooltip的错误(Dennis_Liu)。 +修正Window的GetShowReference返回的字符串包含双引号的问题(︶ㄣ東東ㄣ、天蓝若空、李剑飞、克儿~)。 -虽然返回的JavaScript语句没问题,但是如果放到HTML属性就有问题了。 -修正HtmlNodeBuilder在处理双引号等字符时可能导致潜在JavaScript问题。 -从根本上解决WindowField、LinkButton、HyperLink等控件的客户端脚本存在单引号或者双引号时出现的各种问题。 -增加动态创建模板列示例grid/griddynamiccolumns2.aspx(大鸟打小鸟)。 -修正按钮的Type设为Reset无效的问题,注意重置的其实是页面上所有的表单控件(e先生)。 -修正英文下确认对话框标题依然默认文的问题。 -修正后台对可为空的int,short,double属性赋值时出现的异常(石头鱼)。 +为Window控件增加GetMaximizeReference和GetRestoreReference两个方法。 -变通的实现打开窗体后最大化:PageContext.RegisterStartupScript(Window2.GetShowReference() + Window2.GetMaximizeReference()); -增加英文示例http://demo.extasp.net/en/。 -更新行布局、列布局和锚点布局示例。 -增加表格导出Excel文件示例。 -增加表格模板列使用单选列表、复选列表的示例。 -完善在线文档http://doc.extasp.net/。 -公开ControlBase的ConvertPropertiesToJObject和RecoverPropertiesFromJObject两个方法。 -兼容Asp.Net的用户控件(UserControl)并增加示例(Spring)。 -更新示例框架,增加手风琴控件和树控件的组合菜单(幻之达)。 -修正自动树节点ID的生成规则,防止页面多个树控件产生的命名冲突。 -修正表格WindowField生成的脚本可能会出现类似x2未定义的错误(梦如人生)。 -应广大网友的要求,表格的BoundField在启用状态并且提示信息为空的情况下去除标签。 -类似于onReady函数,增加对onInit函数的支持,用来在执行页面初始化脚本之前调用。 -优化复选框列表和单选按钮列表,减少生成的代码量。 -修正CheckBoxList和RadioButtonList无法在回发更新的BUG(破风、吉吉﹑落叶飞尘)。 -修正CheckBoxList和RadioButtonList初始为空时页面不能显示的BUG(e先生、黑眼睛咪咪、宇洋)。

62,243

社区成员

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

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

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

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