找回密码
 立即注册

QQ登录

只需一步,快速开始

[已处理] C1GridView问题

gw0506
超级版主   /  发表于:2013-10-15 16:48:00
13#
按照我对你需求的理解我觉得也确实没有这么复杂,你只需要使用RowUpdating事件,在事件中通过e.NewValues["列名称"]拿到你修改的单元格的值。然后创建你的bllSchool同步数据源。然后掉BindGrid就可以了。
回复 使用道具 举报
fenicexuan
论坛元老   /  发表于:2013-10-15 14:20:00
12#
回复 11楼gw0506的帖子

整个页面就那几段代码了,我是连存储过程的,发DEMO你也调试不了呢。我可以肯定BindGrid方法是没问题的,只是从数据库读取数据列表而已
private void BindGrid()
        {
            C1GridView1.DataSource = bllSchool.GetList();
            C1GridView1.DataBind();
        }

或者你把能获取修改后的值的代码或例子贴给我看看
我要的很简单,就是通过点击编辑--修改--更新,然后只需要取到修改后的值就OK了
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-10-15 14:07:00
11#
这样吧,但从你给的代码来看很难知道问题出在哪。
你能不能给我个Demo,可以简单一点,重新建个工程,放一点数据。

或者你再现有基础上调试一下。比如你怀疑RowUpdated没有执行,那就下个断点看看进来没有。另外,我觉得是不是BindGrid方法中有什么问题,你也可以跟进去看一下。
回复 使用道具 举报
fenicexuan
论坛元老   /  发表于:2013-10-15 12:24:00
10#
好像都没触发到RowUpdated事件啊,我改成这样,依然改不了数据

        protected void C1GridView1_RowUpdated(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewUpdatedEventArgs e)
        {
            FT.KMS.Model.School modelSchool = new FT.KMS.Model.School();
            modelSchool.SchoolName = "123";
            modelSchool.Address = "456";
            modelSchool.Phone = "3333";
            modelSchool.SetupPerson = "3333";
            modelSchool.SchoolID = 59;

            bllSchool.Update(modelSchool);

            C1GridView1.EditIndex = -1;
            BindGrid();
        }
回复 使用道具 举报
fenicexuan
论坛元老   /  发表于:2013-10-15 12:15:00
9#
回复 8楼gw0506的帖子

有e.NewValues,但是我取不到新值,试了很多次了,我从开始点击编辑,到修改后点击更新的代码是这样的,你帮我看看是不是哪里写错了


//更新开始
        protected void C1GridView1_RowEditing(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewEditEventArgs e)
        {
            //int RowIndex = e.NewEditIndex;
            C1GridView1.EditIndex = e.NewEditIndex;
            //int id = Convert.ToInt32(C1GridView1.DataKeys[C1GridView1.EditIndex].Value.ToString());
            //bllSchool.Delete(id);
            BindGrid();
        }

        //更新行数据
        protected void C1GridView1_RowUpdating(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewUpdateEventArgs e)
        {
            C1GridView1.EditIndex = -1;
            BindGrid();
        }

        protected void C1GridView1_RowUpdated(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewUpdatedEventArgs e)
        {
            //int RowIndex = e.RowIndex;
            //int id = Convert.ToInt32(C1GridView1.DataKeys[RowIndex].Value.ToString());
            //C1GridView1.Rows[e.NewValues[1].ToString();
            FT.KMS.Model.School modelSchool = new FT.KMS.Model.School();

            modelSchool.SchoolName = e.NewValues.Values.ToString();
            modelSchool.Address = e.NewValues[1].ToString();
            modelSchool.Phone = C1GridView1.Rows[e.AffectedRows].Cells[3].Text;
            modelSchool.SetupPerson = C1GridView1.Rows[e.AffectedRows].Cells[4].Text;
            modelSchool.SchoolID = 59;

            bllSchool.Update(modelSchool);

            C1GridView1.EditIndex = -1;
            BindGrid();
        }
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-10-15 12:03:00
8#
RowUpdated中不是有e.NewValues参数吗?这个取不到值吗?

你使用的VS是不是有问题?没有自动完成提示功能吗?
回复 使用道具 举报
fenicexuan
论坛元老   /  发表于:2013-10-15 11:54:00
7#
回复 6楼gw0506的帖子

用RowUpdated取不到各个列的值呢,e.RowIndex和e.NewEditIndex都没用啊。我的目的就是要取各个列修改后的值。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-10-15 11:39:00
6#
因为是Updating,新的数据还没有到前台对象中。
你可以用RowUpdated事件。
回复 使用道具 举报
fenicexuan
论坛元老   /  发表于:2013-10-15 11:29:00
5#
回复 4楼gw0506的帖子

我是要修改数据库里面的记录,用的是存储过程。不是要先RowEditing,然后进行RowUpdating吗?用e.RowIndex取到的不是我修改后的数据呢,是之前的数据。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-10-15 10:56:00
地板
你不是说用的RowEditing吗?

如果是RowUpdating,可以使用e.RowIndex。

有关这些接口的说明以及其参数的说明可以参考帮助文档:
http://helpcentral.componentone. ... etwijmooverview.htm
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部