找回密码
 立即注册

QQ登录

只需一步,快速开始

zhangyi

初级会员

31

主题

90

帖子

269

积分

初级会员

积分
269

活字格认证

zhangyi
初级会员   /  发表于:2013-12-3 12:14  /   查看:11677  /  回复:13
如图: C1FlexGrid中加入了个C1.Win.C1List.C1Combo


相关combo的加载代码:
        DS.DrkckTableAdapters.fwlSelectTableAdapter ta = new DS.DrkckTableAdapters.fwlSelectTableAdapter();
            var t = ta.GetData();
            c1Combo3.DataSource = t;
            c1Combo3.DisplayMember = "fwldm";
            c1Combo3.ValueMember = "fwlid";
            c1Combo3.DropDownWidth = 650;
            c1Combo3.Splits[0].DisplayColumns["fwlid"].Visible = false;
            c1Combo3.Columns["fwldm"].Caption = "编码";
            c1Combo3.Columns["fwllbmc"].Caption = "类别";
            c1Combo3.Columns["fwlmc"].Caption = "名称";
            c1Combo3.Columns["fwlgg"].Caption = "规格";
            c1Combo3.Columns["fdwmc"].Caption = "计量单位";
            c1Combo3.Columns["fwlsp"].Caption = "首拼简码";
            C1.Win.C1FlexGrid.Column col = grid1.Cols["fwldm"];
            col.Editor = c1Combo3;

1.  combo中输入时可以自动模糊搜索到 combo列表中的名称,编码,首拼简码 所在的行,就像百度搜索一样
如果输入的关键字在列表中没有被模糊搜索到,则要清除combo中所输入的
我目前的这种做法只能搜索到被 指定到 c1Combo3.DisplayMember = "fwldm"所在的列

2. 还有一个问题,好像combo加载的列无法改变顺序,只能根据数据源表的顺序,比如我想把 首拼简码调到第一列,只能从数据源表,改列字段顺序
  有没有方法在不动数据源字段顺序的情况下,改变这个列表的显示顺序

谢了!

本帖子中包含更多资源

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

x

13 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-12-3 15:34:00
沙发
回复 1楼zhangyi的帖子

C1Combo 通过 DisplayMember  指定搜索列,请问你的需求是可以在多列中进行搜索吗?
可以通过 C1Combo Sort 方法进行排序,代码如下:

  1. c1Combo1.Sort(0, C1.Win.C1List.SortDirEnum.DESC);
复制代码
回复 使用道具 举报
zhangyi
初级会员   /  发表于:2013-12-3 16:14:00
板凳
回复 2楼iceman的帖子

1. 是的,我想在在多列中模糊搜索

2.
另外,我所指的排序并不是指的列表的记录顺序,而是指
显示的列头的顺序
比如 数据源的字段顺序是  编码,名称,首拼简码
我想在combo显示时,列头的顺序是  首拼简码  编码  名称  这样
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-3 19:05:00
地板
回复 3楼zhangyi的帖子

1.C1Combo 当前只能在 DisplayMember 的基础上进行搜索。建议通过 c1Combo1_TextChanged 和 FindString 来尝试自定义实现。
2.可以通过如下方法指定列的绑定顺序:

  1.             this.c1Combo1.Columns[0].DataField = "名称";
  2.             this.c1Combo1.Columns[0].Caption = "名称";
复制代码
回复 使用道具 举报
zhangyi
初级会员   /  发表于:2013-12-3 19:56:00
5#
回复 4楼iceman的帖子

好的,谢谢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-4 11:31:00
6#
回复 5楼zhangyi的帖子

不客气,有问题欢迎开新帖提问。
回复 使用道具 举报
zhangyi
初级会员   /  发表于:2013-12-10 00:22:00
7#
回复 4楼iceman的帖子

版主您好,按照您的这个设置,列的序顺没有按指这的序顺加载,还是和数据源一样,好像combo自动创建了列,是否有像c1flexgrid一样的 AutoGenerateColumns  属性要设置?

数据源的列顺序 :



加载代码为:
            DS.DwlgxTableAdapters.fgx_selectTableAdapter ta = new DS.DwlgxTableAdapters.fgx_selectTableAdapter();
            var t = ta.GetData(15);
            c1Combo2.DataSource = t;
            c1Combo2.DisplayMember = "fgxdm";
            c1Combo2.ValueMember = "fgxid";
            c1Combo2.DropDownWidth = 220;
            c1Combo2.Splits[0].DisplayColumns["fgxid"].Visible = false;
            c1Combo2.Columns[0].DataField  = "fgxdm";
            c1Combo2.Columns[0].Caption = "工序编码";
            c1Combo2.Columns[1].DataField = "fgxmc";
            c1Combo2.Columns[1].Caption = "工序名称";
            C1.Win.C1FlexGrid.Column col = grid1.Cols["fgxdm"];
            col.Editor = c1Combo2;


运行时显示为:




是否我的加载代码写法有问题
我想它显示为  工序编码    工序名称

本帖子中包含更多资源

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

x
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-10 13:23:00
8#
回复 7楼zhangyi的帖子

zhagnyi 你好,
附件是我实现调整 列顺序 的 Demo 请参考:



根据你提供的信息,我无法重现问题。如果没能解决问题,请发 Demo 到论坛调试。

本帖子中包含更多资源

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

x
回复 使用道具 举报
zhangyi
初级会员   /  发表于:2013-12-10 18:47:00
9#
回复 8楼iceman的帖子

好的,我先学习一下您的例子
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-11 13:24:00
10#
回复 9楼zhangyi的帖子

测试结果如何?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部