FineUI 官方论坛

标题: Grid控件绑定数据之后,如何选中后批量删除?---在线等,急. [打印本页]

作者: 7107135    时间: 2012-4-19 11:41
标题: Grid控件绑定数据之后,如何选中后批量删除?---在线等,急.
Grid控件绑定数据之后,如何选中后批量删除?

选中一行得到一行中某个单元格的数据?
作者: Landroid    时间: 2012-4-19 12:18
论坛中有类似帖子,搜索一下,即可找到,详见
http://bbs.extasp.net/forum.php?mod=viewthread&tid=143
作者: 7107135    时间: 2012-4-19 14:22
看不懂,还是不会啊
作者: Landroid    时间: 2012-4-19 14:26
7107135 发表于 2012-4-19 14:22
看不懂,还是不会啊


获取选中的行索引
int rowindex = Grid1.SelectedRowIndexArray;
获取该行第0列的值
Grid1.DataKeys[rowindex][0].ToString();

还有哪部分没看懂?
作者: Landroid    时间: 2012-4-19 14:28
这个帖子里也有讨论
http://bbs.extasp.net/forum.php? ... p;extra=&page=1
作者: 7107135    时间: 2012-4-19 15:20
我是在Grid1之外用按钮来控制删除的,选中一行之后如何获取改行第一列的值?
作者: 7107135    时间: 2012-4-19 15:21
删除直接连接数据库删除。
作者: 7107135    时间: 2012-4-19 16:02
Grid1.DataKeys[rowindex][0].ToString();

数组超出界限
作者: 7107135    时间: 2012-4-19 16:05
protected void Del2_Click(object sender, EventArgs e)
        {
            int selectcount = Grid1.SelectedRowIndexArray.Length;
            List<student> lis = new List<student>();
            for (int i = 0; i < selectcount; i++)
            {
                int rowindex = Grid1.SelectedRowIndexArray[i];
                student sty = dc.ExecuteQuery<student>("select * from student where stuId='" + Grid1.Rows[rowindex].DataKeys.GetValue(0).ToString() + "'").Single();
                lis.Add(sty);
            }
            dc.student.DeleteAllOnSubmit(lis);
            dc.SubmitChanges();
            databind();
        }

看不懂?{:soso_e105:}
作者: Landroid    时间: 2012-4-19 16:18
7107135 发表于 2012-4-19 16:05
protected void Del2_Click(object sender, EventArgs e)
        {
            int selectcount = Grid1. ...

单行取值用 Grid1.DataKeys[e.rowIndex][0].ToString();
同时在grid中添加dataKeys="id",就是你那列的绑定字段

多行删除,就用前面给你贴的那些代码(不能翻页删除)
作者: Landroid    时间: 2012-4-19 16:19
7107135 发表于 2012-4-19 16:05
protected void Del2_Click(object sender, EventArgs e)
        {
            int selectcount = Grid1. ...

点回复哦,亲,这样我回复你比较快
作者: michenboa    时间: 2012-4-19 17:28
7107135 发表于 2012-4-19 16:05
protected void Del2_Click(object sender, EventArgs e)
        {
            int selectcount = Grid1. ...

在Grid中添加DataKeys="ID,Name"
Grid1.DataKeys[e.rowIndex][0].ToString();就是取ID的值
Grid1.DataKeys[e.rowIndex][1].ToString();就是取Name的值

看看那个飞机票吧,就是我问的


作者: 7107135    时间: 2012-4-20 08:57
string a = Grid1.DataKeys[e.rowIndex][0].ToString();

报错:
e.rowIndex   “System.EventArgs”不包含“rowIndex”的定义,并且找不到可接受类型为“System.EventArgs”的第一个参数的扩展方法“rowIndex”(是否缺少 using 指令或程序集引用?)        C:\Users\idcy\Desktop\SysTem\Plan.aspx.cs        66        46        C:\...\SysTem\

[attach]298[/attach]

我是在Grid1之外使用删除按钮来控制的。如图:比如我选择第一行(打钩),如何获取这一行第0列的序列号(95)?求教,我是新手。。。。不好意思了,各位大侠!~
作者: Landroid    时间: 2012-4-20 09:04
7107135 发表于 2012-4-20 08:57
string a = Grid1.DataKeys[e.rowIndex][0].ToString();

报错:

外部的删除按钮表示你允许它批量删除,
把注释的地方换成你的删除方法
protected void ButtonDelete_Click(object sender, EventArgs e)
    {
        int selectedCount = Grid1.SelectedRowIndexArray.Length;
        int pageIndex = Grid1.PageSize * (Grid1.PageIndex);

        if (selectedCount > 0)
        {
            for (int i = 0; i < selectedCount; i++)
            {
                int rowIndex = Grid1.SelectedRowIndexArray +  pageIndex;
                String id = Grid1.DataKeys[rowIndex][0].ToString();
               //删除操作
            }

            //重新绑定
            dt = GetDatatable();
            BindGrid();
        }
        else
        {
            Alert.ShowInParent("未选中行!");
        }
    }
作者: Landroid    时间: 2012-4-20 09:08
7107135 发表于 2012-4-20 08:57
string a = Grid1.DataKeys[e.rowIndex][0].ToString();

报错:

单行删除请在grid中添加 extinkButtonField
  OnRowCommand="Grid1_RowCommand"

<extinkButtonField HeaderText="删除" ConfirmText="确认删除?" ConfirmTarget="Top" ColumnID="LinkButtonFieldDelete" Width="50px" CommandName="LinkButtonFieldDelete" Text="删除" />
同时在后台代码中添加
   /// <summary>
    /// 行命令
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
    {
        if (e.CommandName == "LinkButtonFieldDelete")
        {
            //删除操作

            String funcId = Grid1.DataKeys[e.RowIndex][0].ToString();
                //删除操作
                //重新绑定表

                BindGrid();
            }
        }
    }

作者: Landroid    时间: 2012-4-20 09:09
本帖最后由 Landroid 于 2012-4-20 09:11 编辑
7107135 发表于 2012-4-20 08:57
string a = Grid1.DataKeys[e.rowIndex][0].ToString();

报错:

关于ExtAspNet控件的使用,推荐你先看官方示例,然后查看官方源代码,弄清楚以后,ExtAspNet的使用方法,你也掌握的差不多了。剩下的就是动手操作了示例地址
http://extasp.net/

示例源代码下载地址
http://extaspnet.codeplex.com/

祝你自学成才

作者: 7107135    时间: 2012-4-20 09:38
谢谢Landroid和各位大侠的耐心指导。{:soso_e165:}
作者: 7107135    时间: 2012-4-20 10:08
单行删除已经成功,终于搞明白如何获取当前行某列值了,原来是DataKeys="ID,Name"的原因,唉。。。。
作者: Landroid    时间: 2012-4-20 10:10
7107135 发表于 2012-4-20 10:08
单行删除已经成功,终于搞明白如何获取当前行某列值了,原来是DataKeys="ID,Name"的原因,唉。。。。 ...

十楼的时候就告诉你要加datakeys了哦
作者: 7107135    时间: 2012-4-20 10:13
Landroid 发表于 2012-4-20 10:10
十楼的时候就告诉你要加datakeys了哦

对呀,我一直没有弄明白,为什么要加,现在明白了,批量也搞定了。
作者: 7107135    时间: 2012-4-20 10:14
Landroid 发表于 2012-4-20 10:10
十楼的时候就告诉你要加datakeys了哦

谢谢你们!
作者: 非礼勿动    时间: 2012-4-20 10:28
EnableCheckBoxSelect="True"   设置过没```
作者: 7107135    时间: 2012-4-20 10:33
恩,这个设置过了。{:soso_e181:}




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4