小平 发表于 2013-10-25 10:53:57

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

本帖最后由 小平 于 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;
      }
    }
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


nyfor 发表于 2013-10-25 13:23:40

本帖最后由 nyfor 于 2013-10-25 13:28 编辑

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

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

nyfor 发表于 2013-10-25 13:54:25

刚试了我说的,发现在QueryPopup事件中设置Items集合的值没有用.

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

小平 发表于 2013-10-25 19:57:28

nyfor 发表于 2013-10-25 13:54
刚试了我说的,发现在QueryPopup事件中设置Items集合的值没有用.

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

谢谢回贴谢谢 nyfor!

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

小平 发表于 2013-10-26 05:03:13

小平 发表于 2013-10-25 19:57
谢谢回贴谢谢 nyfor!

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

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

MichaelChen 发表于 2016-1-16 16:42:09

小平 发表于 2013-10-26 05:03
已用其它方法解决了,谢谢

在GridView 中绑定 ComboBoxEdit ,如何实现啊?好像与dataGridView 中绑定Combobox 不一样哦,请大家指教
页: [1]
查看完整版本: gridView单元格 动态绑定不同的下拉框