开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 4570|回复: 5

gridView单元格 动态绑定不同的下拉框

[复制链接]

0

精华

1

贡献

0

赞扬

帖子
10
软币
137
在线时间
10 小时
注册时间
2013-9-15
发表于 2013-10-25 10:53:57 | 显示全部楼层 |阅读模式
本帖最后由 小平 于 2013-10-25 10:55 编辑

  求指点:
  想实现的效果是:点击 gridView 单元格,动态生成一个下拉框盖住单元格,下拉框的内容根据该行第一列生成,当该单元格失去焦点,把选中的值赋给该单元格,下拉框隐藏。

----------------------------------------以下是我的代码------------------------------------------------------------------------------------------
   string matNo= gridView4.GetRowCellValue(e.RowHandle, "MatNo").ToString();
              int matId = bllMat.GetModelByNo(matNo,CommandType.Text).MatId;
              var listColor = bllMatSub.GetList(CommandType.Text, matId.ToString());//matId
              ArrayList str = new ArrayList();
              foreach (var col in listColor)
              {
                  if (!str.Contains(col.MatSubColId))
                  {
                      str.Add(col.MatSubColId);
                  }
              }
              Int32[] intcol = (Int32[])str.ToArray(typeof(Int32));
              DevExpress.XtraEditors.ComboBoxEdit cbb = new ComboBoxEdit();
              cbb.Location = e.Location;
              ComboBoxItemCollection color = cbb.Properties.Items;
              color.BeginUpdate();
              for (var i = 0; i < intcol.Length; i++)
              {
                  try
                  {
                      color.Add(new CmbInfo() { _key = intcol, _text = bll_color.GetModel(intcol, CommandType.Text).ColCName });
                  }
                  catch { }
              }
              color.EndUpdate();
              cbb.SelectedIndex = -1;
              cbb.Size = new Size(80, 50);
              cbb.Visible = true;
              cbb.Show();
              cbb.ShowPopup();
----------------------------------------------------------上面是具体方法,下面是用到的结构-------------------------------------------------------------------------------------------------------------
struct CmbInfo
    {

        public int _key;
        public string _text;
        public CmbInfo(int key, string text)
        {
            _key = key; _text = text;
        }
        public override string ToString()
        {
            return _text;
        }
    }
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


回复

使用道具 举报

0

精华

174

贡献

985

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
195
软币
4374
在线时间
369 小时
注册时间
2013-6-7
发表于 2013-10-25 13:23:40 | 显示全部楼层
本帖最后由 nyfor 于 2013-10-25 13:28 编辑

使用 ComboBoxEdit 作为其编辑器,然后在ComboBoxEdit的 QueryPopup 事件中去设定 ComboBoxEdit的 Items 集合即可.

在该事件中获取当前行的指定列数据可用 gridView1.GetFocusedRowCellValue 函数.
回复

使用道具 举报

0

精华

174

贡献

985

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
195
软币
4374
在线时间
369 小时
注册时间
2013-6-7
发表于 2013-10-25 13:54:25 | 显示全部楼层
刚试了我说的,发现在QueryPopup事件中设置Items集合的值没有用.

还是建议你用 LookupEdit, 通过绑定 BindingSource 来实现.
回复

使用道具 举报

0

精华

1

贡献

0

赞扬

帖子
10
软币
137
在线时间
10 小时
注册时间
2013-9-15
 楼主| 发表于 2013-10-25 19:57:28 | 显示全部楼层
nyfor 发表于 2013-10-25 13:54
刚试了我说的,发现在QueryPopup事件中设置Items集合的值没有用.

还是建议你用 LookupEdit, 通过绑定 Bindi ...

谢谢回贴  谢谢 nyfor!

我没找到 gridView1.GetFocusedRowCellValue 函数  ,我用的是9.2.6版本的,与这个有关系吗?
回复

使用道具 举报

0

精华

1

贡献

0

赞扬

帖子
10
软币
137
在线时间
10 小时
注册时间
2013-9-15
 楼主| 发表于 2013-10-26 05:03:13 | 显示全部楼层
小平 发表于 2013-10-25 19:57
谢谢回贴  谢谢 nyfor!

我没找到 gridView1.GetFocusedRowCellValue 函数  ,我用的是9.2.6版本的,与这 ...

已用其它方法解决了,谢谢
回复

使用道具 举报

0

精华

0

贡献

23

赞扬

帖子
58
软币
537
在线时间
38 小时
注册时间
2015-5-5
发表于 2016-1-16 16:42:09 | 显示全部楼层
小平 发表于 2013-10-26 05:03
已用其它方法解决了,谢谢

在GridView 中绑定 ComboBoxEdit ,如何实现啊?好像与dataGridView 中绑定Combobox 不一样哦,请大家指教
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-23 11:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表