none
winform datagridview 如何在子窗口修改后刷新列表? RRS feed

  • 问题

  • 我的datagridview的数据是通过条件查询出来装到datatable里的,再用datagridview.datasourse绑定的数据源。

    现在想在选中的单挑数据通过子窗口进行修改后,刷新datagridview的数据,

    但是又不想丢失掉查询条件筛选的结果,这个怎么处理?

    我看有人说用this.dataGridView1.BindingContext[this.dataGridView1.DataSource, this.dataGridView1.DataMember].Current;

    这个方法能实现?


    • 已编辑 Lacuz 2012年5月16日 8:55
    2012年5月16日 8:46

答案

  • 我明白LZ的意思,如果LZ想修改datagridview里面的某一条记录的话,用户的操作步骤是这样的:

    点击datagridview的某一条记录,记录有 id  、name等字段 (我假设)

    然后弹出子窗口,让用户修改这条记录 对吗?

    如果是这样的话,最好就是让用户修改了那条记录的信息之后,更新一下datatable

    示例代码:

           foreach (DataRow row in ds.Tables[0].Rows)
                {
                    if(row["id"].Equals(1))
                    {
                        row["name"] = "xx";
                    }
                }

    然后主窗体的datagridview重新绑定这个datatable就可以了


    给我写信: QQ我:点击这里给我发消息


    • 已编辑 Steven.桦仔 2012年5月19日 7:08
    • 已标记为答案 Lacuz 2012年5月24日 2:10
    2012年5月19日 7:08

全部回复

  • dear

    你是想要选中某一个row然后更改里面的value?如果是的话,你可以选中后在跳出另一个画面,只显示选中的那一列,

    以下的代码您试过了吗?如果还没试一下不就知道了。下列代码可以在塞到另一个dataGridView里

    this.dataGridView1.BindingContext[this.dataGridView1.DataSource,this.dataGridView1.DataMember].Current;

    我自己是习惯使用 BindingSource,不过代码看来是可行的,它是用来抓取目前选中的那一列,支不支持多列就不确定了。


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/


    2012年5月16日 10:26
  • 看来BindingContext满足不了我的需求。

    我有一个treeview传过来一个分类参数SortID

    还有一个TextBox传过来一个模糊查询的条件参数SearchValue

    然后数据库进行筛选Query = "WHERE SortID="+SortID+" AND Name like '%“+SearchValue+”%'“

    这样得到的DataTable结果集作为的数据源,

    我想在弹出的子窗口修改单条数据后,让dataGridView里的数据显示数据库里真实的数据,而不是修改前的,但是条数不变,还是Query 筛选的结果集

    2012年5月17日 0:38
  • dear

    我被你弄乱了,你是想秀出查询结果,然后在修改查询结果吗?会有几个dataGridView?请说明清楚,从头到尾都用dataGridView说明,我搞不懂啊~


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    2012年5月17日 3:58
  • dear

    我被你弄乱了,你是想秀出查询结果,然后在修改查询结果吗?会有几个dataGridView?请说明清楚,从头到尾都用dataGridView说明,我搞不懂啊~


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    一个啊,这和几个dataGridView什么关系?就是一个简单的联合查询,修改记录后刷新列表啊
    • 已编辑 Lacuz 2012年5月18日 1:54
    2012年5月18日 1:53
  • dear

    看来是我自己误会你的需求,你想保留原本的资料又要能够修改?那修改完后的资料要更新到哪?若还是更新到原本的UI那你一开始提供的方式就可以了处理完后再调用dataGridView.Update

    若你是UI不會更新,那也很有可能是以下的问题

    http://www.dotblogs.com.tw/yc421206/archive/2011/04/19/23072.aspx


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/


    2012年5月18日 4:13
  • 我明白LZ的意思,如果LZ想修改datagridview里面的某一条记录的话,用户的操作步骤是这样的:

    点击datagridview的某一条记录,记录有 id  、name等字段 (我假设)

    然后弹出子窗口,让用户修改这条记录 对吗?

    如果是这样的话,最好就是让用户修改了那条记录的信息之后,更新一下datatable

    示例代码:

           foreach (DataRow row in ds.Tables[0].Rows)
                {
                    if(row["id"].Equals(1))
                    {
                        row["name"] = "xx";
                    }
                }

    然后主窗体的datagridview重新绑定这个datatable就可以了


    给我写信: QQ我:点击这里给我发消息


    • 已编辑 Steven.桦仔 2012年5月19日 7:08
    • 已标记为答案 Lacuz 2012年5月24日 2:10
    2012年5月19日 7:08