DevExpress中GridControl的重新绑定数据后如何刷新?

时间:2022-09-13 17:30:44
DevExpress中GridControl的重新绑定数据后如何刷新?
第一次把gridControl1.DataSource = ds1.Tables["墒情信息表"];
然后显示一切正常

第二次gridControl1.DataSource = ds2.Tables["雨量信息表"];
这一次GridControl显示的列名还是之前墒情表的名称,请问如何刷新?????急啊!!!

36 个解决方案

#1


你有没有一个事件来触发
你指的第二次绑定是在什么情况下出现的

一个按钮,还是一个方法,

如果是web程序
应该这样做
ViewState["datasource"]=ds1
如果第二次改你就这样
ViewState["datasource"]=ds2

然后在page_load
方法中
if(ViewState["datasource"]!=null)
{
grid.datasource=ViewState["datasource"] as DataSet;
}

就是用这样的方式,你改改

我们不管有几个数据源,只要有回传,或是执行事件都会经过page_load这样只要你更改了数据源,grid就会跟着变

#2


gridControl1.DataSource =null
 加个这句看一下

#3


gridControl1.DataSource = ds2.Tables["雨量信息表"];
gridControl1.DataBind();

#4


引用 3 楼 happytonice 的回复:
gridControl1.DataSource = ds2.Tables["雨量信息表"];
gridControl1.DataBind();
没看到这个方法啊!!

#5


引用 2 楼 cheeks 的回复:
gridControl1.DataSource =null
 加个这句看一下
试了下不管用,什么gridControl1.Update();
gridControl1.Refresh();
都试过了,grid里面还是显示第一次查询时的列名,重新付给新的DataSource后什么都不显示啊~而且新的 ds2.Tables["雨量信息表"];里面绝对有数据,其他的一些显示控件都可以显示~就是grid纠结啊~!

#6


还有一点要说明下,我用的不是VS的控件,不是DataGiridView,而是DexExpress里面的gridControl,和VS的有区别,单功能相同!有木有这个控件的高手帮看看怎么更新里面的数据显示~!

#7


不太可能吧
gridControl1.DataSource = ds1.Tables["墒情信息表"];
gridView1.Columns.Clear(); //gridControl1.DataSource = null; 没用?
gridControl1.DataSource = ds2.Tables["雨量信息表"];

#8


跟踪测试一下看看

#9


你把你的代码放出来

包括load方法,看下,是不是哪里没写对

#10


引用 7 楼 dongxinxi 的回复:
不太可能吧
gridControl1.DataSource = ds1.Tables["墒情信息表"];
gridView1.Columns.Clear(); //gridControl1.DataSource = null; 没用?
gridControl1.DataSource = ds2.Tables["雨量信息表"];
clear也试过了的!没用列名依然是墒情信息表的~

#11


引用 8 楼 sgzhou12345 的回复:
跟踪测试一下看看
跟踪测试了,代码没错啊,DataSource的第二次赋值(gridControl1.DataSource = ds2.Tables["雨量信息表"];
)也执行了,但是显示出来的时候列名依然是墒情信息表的,并且下面没数据,但是回过去继续查询“墒情信息表”的话就一切正常,难道DataSource在一次赋值后被锁定了吗????用VS自己的控件重来没出现这个问题啊~

#12


引用 9 楼 ajaxtop 的回复:
你把你的代码放出来

包括load方法,看下,是不是哪里没写对
代码很多啊,话说和load有什么关系,我又木有重新打开窗体~

#13


我也没找到刷新方法。
但我用了一个变通的方法:this.gridView1.BestFitColumns();很好用的。

#14


Grid1.RefreshDataSource

#15


在第二次给DataSource赋值后,列名依然是第一次的“墒情信息表”的列名,但我发现“雨量信息表”中和“墒情信息表”列名相同的数据可以显示,不相同的数据显示不了,是不是
DevExpress中GridControl控件会锁定它第一次显示的列名啊???有什么办法可以改变吗???求DevExpress控件高手啊!!!!

#16


引用 14 楼 51crack 的回复:
Grid1.RefreshDataSource
用过,列名依然不变~

#17


引用 13 楼 sudianbo 的回复:
我也没找到刷新方法。
但我用了一个变通的方法:this.gridView1.BestFitColumns();很好用的。
没找到这个方法啊~我用的是DevExpress中GridControl控件,不是VS的datagridview~

#18


楼主没有办法,你就用两个panel吧,然后用两个控件,通过显示控制来实现两个数据源的显示
实在没有遇到这样的问题

#19


引用 18 楼 ajaxtop 的回复:
楼主没有办法,你就用两个panel吧,然后用两个控件,通过显示控制来实现两个数据源的显示
实在没有遇到这样的问题
....是不是要设置一下gridcontrol的属性啊,直接吧表赋值给gridControl1.DataSource就绑定了,就像生成了一个表,而一般在查询的时候都是生成的试图~表会绑定,但是试图不会~

#20


同志们,谢谢大家这么多回答~我终于弄出来了,在重新给gridcontrol.datasource赋值前,把里面的gridview使用gridView1.Columns.Clear();这个放吧,将试图的列名清空~~~就OK了~

#21


楼主,今天看到贴差点就想说这事,觉得你很可能把列名定死了

哎,清空吧,这个必须的,要不看到的肯定是以前的嘛

#22


引用 21 楼 ajaxtop 的回复:
楼主,今天看到贴差点就想说这事,觉得你很可能把列名定死了

哎,清空吧,这个必须的,要不看到的肯定是以前的嘛
呵呵,想一块去了!

#23


        DataTable dt = null;
        DataTable dt1 = null;

        private void Form1_Load(object sender, EventArgs e)
        {
            DevExpress.XtraGrid.Columns.GridColumn colname = new DevExpress.XtraGrid.Columns.GridColumn();
            colname.Name = "colname";
            colname.FieldName = "colname";
            colname.VisibleIndex = 0;

            DevExpress.XtraGrid.Columns.GridColumn colpic = new DevExpress.XtraGrid.Columns.GridColumn();
            colpic.Name = "colpic";
            colpic.FieldName = "colpic";
            colpic.VisibleIndex = 1;

            DevExpress.XtraGrid.Columns.GridColumn colimg = new DevExpress.XtraGrid.Columns.GridColumn();
            colimg.Name = "colimage";
            colimg.FieldName = "colimage";
            colimg.VisibleIndex = 2;
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colname, colpic, colimg });

            //gridView1.OptionsView.RowAutoHeight = true;

            DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit picedit = new DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit();
            picedit.AutoHeight = true;
            picedit.Name = "respositoryitempic1";
            colpic.ColumnEdit = picedit;
            DevExpress.XtraEditors.Repository.RepositoryItemImageEdit imageedit = new DevExpress.XtraEditors.Repository.RepositoryItemImageEdit();
            imageedit.AutoHeight = true;
            imageedit.Name = "respositoryitem1";
            colimg.ColumnEdit = imageedit;

            Image img = new Bitmap(@"G:\图片\无标题.jpg");

            dt = new DataTable();
            dt.Columns.Add("colname", typeof(string)).Caption="姓名";
            dt.Columns.Add("colpic", typeof(Image)).Caption="图像";
            dt.Columns.Add("colimage", typeof(Image)).Caption = "图像";

            dt.Rows.Add("asda", img, img);

            gridControl1.DataSource = dt;

            dt1 = new DataTable();
            dt1.Columns.Add("colname", typeof(string)).Caption = "aaa";
            dt1.Columns.Add("colpic", typeof(string)).Caption = "bbb";

            dt1.Rows.Add("bsc", "adsasd");
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            gridView1.Columns.Clear();
            gridControl1.DataSource = dt1;
        }


用            gridView1.Columns.Clear();就行啊

#24


解决就好!

多次动态给 dev的grid绑定数据需要它
gridView1.Columns.Clear();

#25


请问ASPxPivotGrid 后台用sql server 2005 ,自己在后台用sql 语句生成dataset ,然后赋值给ASPxPivotGrid的datasource,查询后显示没有问题,有数据,但是如果用鼠标点击ASPxPivotGrid的某个字段的过滤的箭头后,数据就没有了,请问该怎么解决呢,谢谢!  请看帖子http://topic.csdn.net/u/20120104/17/3839cc99-b688-4d2c-9290-3fe9e324b73c.html?11030

#26


请问DevExpress的ASPxPivotGrid 后台用sql server 2005 ,自己在后台用sql 语句生成dataset ,然后赋值给ASPxPivotGrid的datasource,查询后显示没有问题,有数据,但是如果用鼠标点击ASPxPivotGrid的某个字段的过滤的箭头后,数据就没有了,请问该怎么解决呢,谢谢!  请看帖子http://topic.csdn.net/u/20120104/17/3839cc99-b688-4d2c-9290-3fe9e324b73c.html?11030

#27


不好意思发重了。请问DevExpress的ASPxPivotGrid 后台用sql server 2005 ,自己在后台用sql 语句生成dataset ,然后赋值给ASPxPivotGrid的datasource,查询后显示没有问题,有数据,但是如果用鼠标点击ASPxPivotGrid的某个字段的过滤的箭头后,数据就没有了,请问该怎么解决呢,谢谢!请看帖子 请看帖子[url=http://topic.csdn.net/u/20120104/17/3839cc99-b688-4d2c-9290-3fe9e324b73c.html?11030

#28


引用 24 楼  的回复:
解决就好!

多次动态给 dev的grid绑定数据需要它
gridView1.Columns.Clear();

确定好用!!

#29


gridControl1.DataSource = ds2.Tables["雨量信息表"];
gridview.columns[0].filename="";
gridview.columns[0].caption="asdf"

#30


this.gridView1.BestFitColumns();确实很不错

#31


我碰過,綁定後,數據源上的列與GRIDCONTROL上的列不同,用
gridView1.Columns.Clear();
就可以了

#32


this.superGridControl4.Refresh();

#33


都这么久了啊
gridControl1.MainView.PopulateColumns();
加这句
一定要放在gridControl1.DataSource=ds;的后面。

#34


33楼V5and87

#35


33楼说的对!

#36


为使得gridcontrol的设计时支持可用,不要用这么花哨的办法来解决一个gridcontrol绑定两个数据源的问题。

直接用两个gridcontrol,设置可见不可见来“忽悠”一下眼睛才是上上之策。

#1


你有没有一个事件来触发
你指的第二次绑定是在什么情况下出现的

一个按钮,还是一个方法,

如果是web程序
应该这样做
ViewState["datasource"]=ds1
如果第二次改你就这样
ViewState["datasource"]=ds2

然后在page_load
方法中
if(ViewState["datasource"]!=null)
{
grid.datasource=ViewState["datasource"] as DataSet;
}

就是用这样的方式,你改改

我们不管有几个数据源,只要有回传,或是执行事件都会经过page_load这样只要你更改了数据源,grid就会跟着变

#2


gridControl1.DataSource =null
 加个这句看一下

#3


gridControl1.DataSource = ds2.Tables["雨量信息表"];
gridControl1.DataBind();

#4


引用 3 楼 happytonice 的回复:
gridControl1.DataSource = ds2.Tables["雨量信息表"];
gridControl1.DataBind();
没看到这个方法啊!!

#5


引用 2 楼 cheeks 的回复:
gridControl1.DataSource =null
 加个这句看一下
试了下不管用,什么gridControl1.Update();
gridControl1.Refresh();
都试过了,grid里面还是显示第一次查询时的列名,重新付给新的DataSource后什么都不显示啊~而且新的 ds2.Tables["雨量信息表"];里面绝对有数据,其他的一些显示控件都可以显示~就是grid纠结啊~!

#6


还有一点要说明下,我用的不是VS的控件,不是DataGiridView,而是DexExpress里面的gridControl,和VS的有区别,单功能相同!有木有这个控件的高手帮看看怎么更新里面的数据显示~!

#7


不太可能吧
gridControl1.DataSource = ds1.Tables["墒情信息表"];
gridView1.Columns.Clear(); //gridControl1.DataSource = null; 没用?
gridControl1.DataSource = ds2.Tables["雨量信息表"];

#8


跟踪测试一下看看

#9


你把你的代码放出来

包括load方法,看下,是不是哪里没写对

#10


引用 7 楼 dongxinxi 的回复:
不太可能吧
gridControl1.DataSource = ds1.Tables["墒情信息表"];
gridView1.Columns.Clear(); //gridControl1.DataSource = null; 没用?
gridControl1.DataSource = ds2.Tables["雨量信息表"];
clear也试过了的!没用列名依然是墒情信息表的~

#11


引用 8 楼 sgzhou12345 的回复:
跟踪测试一下看看
跟踪测试了,代码没错啊,DataSource的第二次赋值(gridControl1.DataSource = ds2.Tables["雨量信息表"];
)也执行了,但是显示出来的时候列名依然是墒情信息表的,并且下面没数据,但是回过去继续查询“墒情信息表”的话就一切正常,难道DataSource在一次赋值后被锁定了吗????用VS自己的控件重来没出现这个问题啊~

#12


引用 9 楼 ajaxtop 的回复:
你把你的代码放出来

包括load方法,看下,是不是哪里没写对
代码很多啊,话说和load有什么关系,我又木有重新打开窗体~

#13


我也没找到刷新方法。
但我用了一个变通的方法:this.gridView1.BestFitColumns();很好用的。

#14


Grid1.RefreshDataSource

#15


在第二次给DataSource赋值后,列名依然是第一次的“墒情信息表”的列名,但我发现“雨量信息表”中和“墒情信息表”列名相同的数据可以显示,不相同的数据显示不了,是不是
DevExpress中GridControl控件会锁定它第一次显示的列名啊???有什么办法可以改变吗???求DevExpress控件高手啊!!!!

#16


引用 14 楼 51crack 的回复:
Grid1.RefreshDataSource
用过,列名依然不变~

#17


引用 13 楼 sudianbo 的回复:
我也没找到刷新方法。
但我用了一个变通的方法:this.gridView1.BestFitColumns();很好用的。
没找到这个方法啊~我用的是DevExpress中GridControl控件,不是VS的datagridview~

#18


楼主没有办法,你就用两个panel吧,然后用两个控件,通过显示控制来实现两个数据源的显示
实在没有遇到这样的问题

#19


引用 18 楼 ajaxtop 的回复:
楼主没有办法,你就用两个panel吧,然后用两个控件,通过显示控制来实现两个数据源的显示
实在没有遇到这样的问题
....是不是要设置一下gridcontrol的属性啊,直接吧表赋值给gridControl1.DataSource就绑定了,就像生成了一个表,而一般在查询的时候都是生成的试图~表会绑定,但是试图不会~

#20


同志们,谢谢大家这么多回答~我终于弄出来了,在重新给gridcontrol.datasource赋值前,把里面的gridview使用gridView1.Columns.Clear();这个放吧,将试图的列名清空~~~就OK了~

#21


楼主,今天看到贴差点就想说这事,觉得你很可能把列名定死了

哎,清空吧,这个必须的,要不看到的肯定是以前的嘛

#22


引用 21 楼 ajaxtop 的回复:
楼主,今天看到贴差点就想说这事,觉得你很可能把列名定死了

哎,清空吧,这个必须的,要不看到的肯定是以前的嘛
呵呵,想一块去了!

#23


        DataTable dt = null;
        DataTable dt1 = null;

        private void Form1_Load(object sender, EventArgs e)
        {
            DevExpress.XtraGrid.Columns.GridColumn colname = new DevExpress.XtraGrid.Columns.GridColumn();
            colname.Name = "colname";
            colname.FieldName = "colname";
            colname.VisibleIndex = 0;

            DevExpress.XtraGrid.Columns.GridColumn colpic = new DevExpress.XtraGrid.Columns.GridColumn();
            colpic.Name = "colpic";
            colpic.FieldName = "colpic";
            colpic.VisibleIndex = 1;

            DevExpress.XtraGrid.Columns.GridColumn colimg = new DevExpress.XtraGrid.Columns.GridColumn();
            colimg.Name = "colimage";
            colimg.FieldName = "colimage";
            colimg.VisibleIndex = 2;
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colname, colpic, colimg });

            //gridView1.OptionsView.RowAutoHeight = true;

            DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit picedit = new DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit();
            picedit.AutoHeight = true;
            picedit.Name = "respositoryitempic1";
            colpic.ColumnEdit = picedit;
            DevExpress.XtraEditors.Repository.RepositoryItemImageEdit imageedit = new DevExpress.XtraEditors.Repository.RepositoryItemImageEdit();
            imageedit.AutoHeight = true;
            imageedit.Name = "respositoryitem1";
            colimg.ColumnEdit = imageedit;

            Image img = new Bitmap(@"G:\图片\无标题.jpg");

            dt = new DataTable();
            dt.Columns.Add("colname", typeof(string)).Caption="姓名";
            dt.Columns.Add("colpic", typeof(Image)).Caption="图像";
            dt.Columns.Add("colimage", typeof(Image)).Caption = "图像";

            dt.Rows.Add("asda", img, img);

            gridControl1.DataSource = dt;

            dt1 = new DataTable();
            dt1.Columns.Add("colname", typeof(string)).Caption = "aaa";
            dt1.Columns.Add("colpic", typeof(string)).Caption = "bbb";

            dt1.Rows.Add("bsc", "adsasd");
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            gridView1.Columns.Clear();
            gridControl1.DataSource = dt1;
        }


用            gridView1.Columns.Clear();就行啊

#24


解决就好!

多次动态给 dev的grid绑定数据需要它
gridView1.Columns.Clear();

#25


请问ASPxPivotGrid 后台用sql server 2005 ,自己在后台用sql 语句生成dataset ,然后赋值给ASPxPivotGrid的datasource,查询后显示没有问题,有数据,但是如果用鼠标点击ASPxPivotGrid的某个字段的过滤的箭头后,数据就没有了,请问该怎么解决呢,谢谢!  请看帖子http://topic.csdn.net/u/20120104/17/3839cc99-b688-4d2c-9290-3fe9e324b73c.html?11030

#26


请问DevExpress的ASPxPivotGrid 后台用sql server 2005 ,自己在后台用sql 语句生成dataset ,然后赋值给ASPxPivotGrid的datasource,查询后显示没有问题,有数据,但是如果用鼠标点击ASPxPivotGrid的某个字段的过滤的箭头后,数据就没有了,请问该怎么解决呢,谢谢!  请看帖子http://topic.csdn.net/u/20120104/17/3839cc99-b688-4d2c-9290-3fe9e324b73c.html?11030

#27


不好意思发重了。请问DevExpress的ASPxPivotGrid 后台用sql server 2005 ,自己在后台用sql 语句生成dataset ,然后赋值给ASPxPivotGrid的datasource,查询后显示没有问题,有数据,但是如果用鼠标点击ASPxPivotGrid的某个字段的过滤的箭头后,数据就没有了,请问该怎么解决呢,谢谢!请看帖子 请看帖子[url=http://topic.csdn.net/u/20120104/17/3839cc99-b688-4d2c-9290-3fe9e324b73c.html?11030

#28


引用 24 楼  的回复:
解决就好!

多次动态给 dev的grid绑定数据需要它
gridView1.Columns.Clear();

确定好用!!

#29


gridControl1.DataSource = ds2.Tables["雨量信息表"];
gridview.columns[0].filename="";
gridview.columns[0].caption="asdf"

#30


this.gridView1.BestFitColumns();确实很不错

#31


我碰過,綁定後,數據源上的列與GRIDCONTROL上的列不同,用
gridView1.Columns.Clear();
就可以了

#32


this.superGridControl4.Refresh();

#33


都这么久了啊
gridControl1.MainView.PopulateColumns();
加这句
一定要放在gridControl1.DataSource=ds;的后面。

#34


33楼V5and87

#35


33楼说的对!

#36


为使得gridcontrol的设计时支持可用,不要用这么花哨的办法来解决一个gridcontrol绑定两个数据源的问题。

直接用两个gridcontrol,设置可见不可见来“忽悠”一下眼睛才是上上之策。