FineUI 官方论坛

标题: 索引超出数组的界限,求解决方案?????????? [打印本页]

作者: 7107135    时间: 2012-4-23 10:53
标题: 索引超出数组的界限,求解决方案??????????
外部添加删除按钮点击触发Click事件,删除选中的项之后,再更新选中行的关键字段到另外一张表

try
        {
            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();
                    string sql = "delete from tb_Planning where id='" + id + "'";
                    db.ds(sql);
                }
                以上执行没有问题,可以正常删除
-------------------------------------------------------------------------------------------------------------
               以下执行到 String XMMX = Grid1.DataKeys[rowIndex][3].ToString();  的时候抛出异常索引超出数组的界限;求解怎么解决?


                for (int i = 0; i < selectedCount; i++)
                {
                    int rowIndex = Grid1.SelectedRowIndexArray + pageIndex;
                    String XMMX = Grid1.DataKeys[rowIndex][3].ToString();                                 
                    string sql = "update db_Order set loaded='true' where id='" + XMMX + "'";
                    db.ds(sql);
                }

                    string strsql = "select * from tb_Planning";
                    ds = db.ds(strsql);
                    Grid1.DataSource = ds.Tables[0];
                    Grid1.DataBind();
                    Alert.ShowInTop("删除成功!", MessageBoxIcon.Warning);
            }
            else
            {
                Alert.ShowInParent("未选中所要删除的行!");
            }
        }
        catch
        {

        }


作者: Landroid    时间: 2012-4-23 11:07
DataKeys怎么写的?
作者: 7107135    时间: 2012-4-23 11:12
DataKeyNames="Id,Name“
作者: 7107135    时间: 2012-4-23 11:13
DataKeyNames="Id,Name,这里是不是要加上第3列字段的名字“?

Grid1.DataKeys[rowIndex][3].ToString();      
作者: Landroid    时间: 2012-4-23 11:17
7107135 发表于 2012-4-23 11:13
DataKeyNames="Id,Name,这里是不是要加上第3列字段的名字“?

Grid1.DataKeys[rowIndex][3].ToString();  ...

嗯,要加第三列字段名,还有,datakeys是从0开始的
作者: 7107135    时间: 2012-4-23 11:18
谢谢老大提醒,突然间恍然大悟
作者: Landroid    时间: 2012-4-23 11:20
7107135 发表于 2012-4-23 11:18
谢谢老大提醒,突然间恍然大悟

下次点回复,我才能收到你回复的消息哦,亲
作者: 7107135    时间: 2012-4-23 11:25
Landroid 发表于 2012-4-23 11:20
下次点回复,我才能收到你回复的消息哦,亲

哦,对。呵呵,忘了忘了,你说过一次了。
作者: 7107135    时间: 2012-4-23 11:28
7107135 发表于 2012-4-23 11:25
哦,对。呵呵,忘了忘了,你说过一次了。

我要获取第三列的值应该怎么做?

  for (int i = 0; i < selectedCount; i++)
                {
                    int rowIndex = Grid1.SelectedRowIndexArray + pageIndex;
                    String XMMX = Grid1.DataKeys[rowIndex][3].ToString();     
                    //改成3这样又报错,改成0 获得是数据库行ID               
            
                    string sql = "update db_Order set loaded='true' where id='" + XMMX + "'";
                    db.ds(sql);
                }
作者: 7107135    时间: 2012-4-23 11:31
Landroid 发表于 2012-4-23 11:17
嗯,要加第三列字段名,还有,datakeys是从0开始的

我要获取第三列的值应该怎么做?

  for (int i = 0; i < selectedCount; i++)
                {
                    int rowIndex = Grid1.SelectedRowIndexArray + pageIndex;
                    String XMMX = Grid1.DataKeys[rowIndex][3].ToString();     
                    //改成3这样又报错,改成0 获得是数据库行ID               
            
                    string sql = "update db_Order set loaded='true' where id='" + XMMX + "'";
                    db.ds(sql);
                }
作者: 7107135    时间: 2012-4-23 11:34
Landroid 发表于 2012-4-23 11:17
嗯,要加第三列字段名,还有,datakeys是从0开始的

改成2就可以了,DataKeyNames="Id,Name,项目明细"

这里第3个才是项目明细啊
作者: Landroid    时间: 2012-4-23 11:36
Grid1.DataKeys[rowIndex][2].ToString();   
作者: 7107135    时间: 2012-4-23 11:37
Landroid 发表于 2012-4-23 11:36
Grid1.DataKeys[rowIndex][2].ToString();

DataKeyNames="Id,Name,项目明细"

这里的ID,NAME记录的是第一列?
作者: Landroid    时间: 2012-4-23 11:37
7107135 发表于 2012-4-23 11:34
改成2就可以了,DataKeyNames="Id,Name,项目明细"

这里第3个才是项目明细啊

是从0开始的,第三列为2
作者: Landroid    时间: 2012-4-23 11:38
7107135 发表于 2012-4-23 11:37
DataKeyNames="Id,Name,项目明细"

这里的ID,NAME记录的是第一列?

id对应的是列0,name是列1,项目明细是列2.。。

你说的第三列,数组中的值为2.。。

作者: 7107135    时间: 2012-4-23 11:42
Landroid 发表于 2012-4-23 11:38
id对应的是列0,name是列1,项目明细是列2.。。

你说的第三列,数组中的值为2.。。

糊涂了,唉~~~~谢谢老大。。。。这下彻底明白了。。。。




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