首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2013-07-04 
extaspnet中grid全选批量删除的问题我给grid的pagesize设置为3,然后删除事件的代码如下 protected void bt

extaspnet中grid全选批量删除的问题
我给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页的,这事为什么在呢,我是按书上的代码写的,谢谢。 30


[解决办法]
翻页后需要加入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();
        }
    }
}



你一看就知道了吧

热点排行