请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

FBAccount

中级会员

21

主题

73

帖子

701

积分

中级会员

积分
701

活字格认证

FBAccount
中级会员   /  发表于:2014-12-12 15:46  /   查看:4591  /  回复:4
版主~ 不好意思又要打扰了~~~

DEMO如下附件~~



数据集合是用List承接~ Column采代码生成~ Cell Button采图片填入

主要要求是DataSource 绑定 List,Columns 初始建一次就好

目前问题是倘若清除List内的资料,相对于Flexgrid UI上数据内容是会清除,但Rows仍在~~
若采用DataSource = null 再 重新绑定,先前设定的Column就会不见~

有什么方法可以不重新设定Column的状态下,完整清除所有纪录呢?

其二为,我新增数据时,一般来说新增进来的数据会一笔笔向下添加下去,那倘若今天需要新增进来的每笔必须是添加在TopRow,现阶段Flexgrid已经有快速的方式完成这样的需求吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

4 个回复

倒序浏览
FBAccount
中级会员   /  发表于:2014-12-12 16:19:00
沙发
版主~ 不好意思又要打扰了~~~

DEMO如下附件~~



数据集合是用List承接~ Column采代码生成~ Cell Button采图片填入

主要要求是DataSource 绑定 List,Columns 初始建一次就好

目......
FBAccount 发表于 2014-12-12 15:46:00


以这DEMO做例子,目前我是将DataSource = null 再重新建立Columns
FBflex.DataSource = null;
list.Clear();
FBflex.Rows.Count = 1;
FBflex.Cols.Count = 0;
// 然后重建Columns
// 重新绑定list
// 重新针对Cell进行图片的填入
对于第一个问题有其他方式吗??
回复 使用道具 举报
gw0506
超级版主   /  发表于:2014-12-12 18:08:00
板凳
绑定模式下,不支持设置Rows.Count,所以必须解除绑定模式。你的做法是正确的,没有其他办法。

对于你说的添加到TopRow的情况,可以通过list.Insert,然后Refresh或者重新绑定来实现
  1. private void c1Button2_Click(object sender, EventArgs e)
  2.         {
  3.             Report rt = new Report();
  4.             Random rnd = new Random();
  5.             rt.IsChecked = false;
  6.             rt.Odno = "123";
  7.             rt.DeleteBtn = string.Empty;
  8.             rt.ChangeBtn = string.Empty;
  9.             rt.Acno = rnd.Next(int.MaxValue).ToString();
  10.             rt.OrderDate = rnd.Next(int.MaxValue).ToString();
  11.             rt.OrderKind = rnd.Next(int.MaxValue).ToString();
  12.             rt.OrderType = rnd.Next(int.MaxValue).ToString();
  13.             rt.oprc = rnd.Next(int.MaxValue).ToString();
  14.             rt.kqty = rnd.Next(int.MaxValue).ToString();
  15.             rt.oqty = rnd.Next(int.MaxValue).ToString();
  16.             rt.dprc = rnd.Next(int.MaxValue).ToString();
  17.             rt.dqty = rnd.Next(int.MaxValue).ToString();
  18.             rt.detial = rnd.Next(int.MaxValue).ToString();
  19.             rt.osrc = rnd.Next(int.MaxValue).ToString();
  20.             rt.rdate = rnd.Next(int.MaxValue).ToString();
  21.             rt.status = rnd.Next(int.MaxValue).ToString();
  22.             this.list.Insert(0, rt);
  23.             FBflex.Redraw = false;
  24.             //FBflex.DataSource = list;
  25.             FBflex.Refresh();
  26.             FBflex.Redraw = true;
  27.         }
复制代码

评分

参与人数 1满意度 +5 收起 理由
FBAccount + 5 本以为设计界面有Option可以选择,OK~就采Insert吧,感谢,问题结帖

查看全部评分

回复 使用道具 举报
FBAccount
中级会员   /  发表于:2014-12-19 15:28:00
地板
绑定模式下,不支持设置Rows.Count,所以必须解除绑定模式。你的做法是正确的,没有其他办法。

对于你说的添加到TopRow的情况,可以通过list.Insert,然后Refresh或者重新绑定来实现
[code]
private void c1Button2_Click(object sender, EventArgs e)
        {
            Report rt
gw0506 发表于 2014-12-12 18:08:00


IList 绑定方式与我们认知内容不太相符,IList新增数据进去后,无法直接呈现在画面上~ 需进行DataSource = null,重建Header,再行绑定(我用Refresh也不行),这不就有违Binding的涵义了吗?

然而DataTable则绑定后,新增数据加入就可以直接画面呈现出来,并正确行驶绑定后的操作

请问List绑定方式有办法像DataTable一样吗?? 不然同样是绑定,List绑定像做一半一样,是有问题的,很像固定Array宣告后,个数限制住了,必须重新解绑定后再行绑定~~ 难道不能像DataTable一样吗?? 直接对集合新增数据,不需要重新绑定~~


p.s. IList 使用AutoGenerateColumns = false;DataTable 使用AutoGenerateColumns = True
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-19 18:25:00
5#
回复 4楼FBAccount的帖子

我们又重新验证了你的程序。
DataTable和List是两种不同的数据源,其底层实现的方式也不相同。
数据绑定是在两种数据源的基础上的,因此局限性是由于泛型List本身的原因造成,还望理解。

基于以上的这些,给C1FlexGrid换一个数据源,不让它直接绑定List,而是通过BindingSource来绑定List。
1.首先创建一个BindingSource。
  1. BindingSource bs = new BindingSource();
复制代码

2.让BindingSource绑定List,C1FlexGrid绑定BindingSource。
  1. bs.DataSource = list;
  2. FBflex.DataSource = bs;
复制代码

3.这个时候就会利用BindingSource来对数据源增删改,并且自动更新。
---------------添加数据
Report rt=new Report();
//添加Report数据
//.....
bs.Add(rt);
-----------删除所有数据
bs.Clear();

做了这样的绑定后,所有的增加,删除和清除数据都可以在BindingSource的基础上去做,而不是List,C1FlexGrid可以自动的更新。

但是BindingSource绑定也有其局限性,即不能实现排序。
它的局限性以及解决方案请参考博客:http://blog.gcpowertools.com.cn/post/2013/03/14/C1FlexGrid-对绑定的数据对象排序.aspx

评分

参与人数 1满意度 +5 收起 理由
FBAccount + 5 目前改采DataTable方式,感谢响应

查看全部评分

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部