我是这样做的:1、做一个gridcontrol,建立一个datatable1,从sql数据库读取数据并提取出需要的内容放到了datatable1里面,然后将datatable的defualtview绑定到了gridcontrol.datasource,列表显示,没有问题。2、后台定时对datatable1内的数据进行了修改并显示。报错,错误定位在对datatable1内容修改的时候,例如我是这样改的
datatable1.rows["列1"]="新数值";反复定位,只要这样去修改datatable1,不管接下来如何做都会报错。3、用vs2008自带的gridview控件做上述实验,没有报任何错误,对datatable1中数据修改后,界面上会直接显示。请帮忙解决下dev的这问题,或许是我使用不当
datatable1.rows["列1"]="新数值";反复定位,只要这样去修改datatable1,不管接下来如何做都会报错。3、用vs2008自带的gridview控件做上述实验,没有报任何错误,对datatable1中数据修改后,界面上会直接显示。请帮忙解决下dev的这问题,或许是我使用不当
为啥用list,gridview显示不正常啊,如何把list绑到gridview ,再一个list查找某行数据怎么查啊
DataTable dt = 。;
BindingSource bs = dt;
表格。数据源 = bs;
楼主把你的部分代码贴出来,并把出错位置也指出来。
代码是这样写的我后台是用timer计时器定期调用函数doit,class form1
{
public DataTable datatable1;
public init
{
对datatable1进行初始化赋值,并将其绑定到gridcontrol上
步骤略; System.Timers.Timer t = new System.Timers.Timer(1000*3);
t.AutoReset=true;
t.Elapsed +=new System.Timers.ElapsedEventHandler(doit);
t.Start();
} public delegate void Dodelegate(string ip);
public void doit(Object sender, System.Timers.ElapsedEventArgs e)
{
Dosomething ds =new Dosomething();
Dodelegate del =new Dodelegate(ds.Do);
AsyncCallback callBack = new AsyncCallback(OnComplete);
del.BeginInvoke("haha", callBack, null);
}
public void OnComplete(IAsyncResult asy)
{
AsyncResult rst = (AsyncResult)asy;
Dodelegate del = (Dodelegate )rst.AsyncDelegate; bool rtn = del.EndInvoke(asy);
foreach(DataRow dr in datatable1)
{
if(rtn)
dr["要改的字段"]="要改的数值";
else
dr["要改的字段"]="别的数值";
}
}
}
public class Dosomething
{
public bool Do(string ip)
{...}
}大家帮忙看看,是不是因为用了异步调用的原因,才报错的,貌似跟devexpress无关,我换成vs自带的gridview以后,观察内存一直在涨,然后还是会报错,错误是赋值时索引超出范围,必须为非负值并小于集合大小。
用List确实不报错了,但是grid中的数据不自动刷新了,怎么回事,必须要用鼠标去点一下页面那一行才会刷新,用update()等函数也不管用