DataGridview绑定BindingList数据源后,直接获取控件列数为0,但界面显示后列数不为零。且再次访问控件列数时也不为0.
不如贴代码
dgv.Columns.Clear();
dgv.DataSource = uniqueValueRecordClassList;
int colCount = dgv.Columns.Count;
如上,绑定数据源后拿到的colCount为0,但实际界面如下
@Fish With Smile: 可以检查一下,dgv 是哪里的数据 .调试走一下. 如果是数据原 也不会单单只有一个数据 而会是一行数据
@筱浬: 尝试过多次,找不到原因,感觉是不是绑定BindingList数据源的话要界面重绘完成后才能完成数据绑定。
@Fish With Smile: 绑定还要写 databind() 方法吧 我太久没写winform 不过好像要写这个东西
@Fish With Smile: 不对 你每次刷新页面 要在page_load 里写加载的代码啊
@Fish With Smile: 做个是否回传的判定了吗 ispostback
@筱浬: 数据绑定就是在load事件里触发的
@筱浬: datagridview没有databind相关的方法呢
@Fish With Smile: 绑定数据源后 有数据就会自动填充 没有数据就是如你上图啊, 你的COUNT=0 图中也没有问题啊
@筱浬: 塞了测试数据列数还是为0,已疯
@筱浬: count是列啊不是行
@Fish With Smile: 你把这个 DataGridView.Columns.Count 放在他绑定后 把位置放到最后面
@筱浬: 本来就在最后呢,我要在绑定后修改列标题文本。现在因为绑定后列数为0,也就无法修改了。这情况太不符合逻辑。
@Fish With Smile: 我自己弄一个试试 对这个太陌生了
@筱浬:单独测的可以的,我在调试找找原因吧。界面逻辑有点复杂,可能是拿grid传参的原因。还是谢谢你
@Fish With Smile: 具体原因出在哪不明白,你的这些代码上没有问题 我写在Form1() 方法里 运行后获取到的count 也改变了 headerTEXT
@筱浬: 恩呢,我单独测试的也是可以,但是在现有的项目里不行。可能页面太复杂,有地方没处理好。
@Fish With Smile: 你把设置去掉 先把复杂的去掉 留下最简的 然后一点一点加 这是最笨的办法
试试从DefaultView的列数获取,看看有没有?
原生控件,没有DefaultView