当前位置:编程学习 > C#/ASP.NET >>

关于datagridview的问题

我想实现这个效果,datagridview的某一列里根据条件判断,有的行要显示成普通的,有的要显示成下拉列表的,要怎么办呀?
在EditingControlShowing事件里加载combobox,可是编辑那个单元格的时候总是很不灵活,要单击至少两下,combobox才能显示出来。
我自己在代码里用datagridview.Controls.Add(combobox)加载上了combobox,可是当数据量过多,有滚动条出现的时候,滚动滚动条combobox又不能跟着移动
有没有什么办法能解决呢?或者有没有什么更好的办法实现这个需求呢 --------------------编程问答-------------------- 同样求解,刚遇到这个问题。。没有解决。

我是编写了事件。双击轮回显示。。 --------------------编程问答-------------------- 可以在单元格里放一个user control,根据当前行的数据决定user control里面是显示文本框还是组合框 --------------------编程问答-------------------- 加载combobox,可是编辑那个单元格的时候总是很不灵活,要单击至少两下 这个问题以前也遇到过 好像是因为这个控件需要获得焦点之后 才能选择 要点两下是挺烦的 当时也没解决 --------------------编程问答--------------------
引用 2 楼 jiangsheng 的回复:
可以在单元格里放一个user control,根据当前行的数据决定user control里面是显示文本框还是组合框

请问怎么在单元格里放user control呢?我只能计算出单元格的矩形区域,放在那个位置上 --------------------编程问答--------------------
引用 4 楼 wlzhn2012 的回复:
引用 2 楼 jiangsheng 的回复:
可以在单元格里放一个user control,根据当前行的数据决定user control里面是显示文本框还是组合框
请问怎么在单元格里放user control呢?我只能计算出单元格的矩形区域,放在那个位置上,

但是那样的话,拖动滚动条的时候,没有办法刷新combobox的位置 --------------------编程问答-------------------- 我也是啊,也是要点两下。 我是这么在里面绑定的cbx

private void SetAuditColumn( DataGridView dg)
        {
            for (int i = 0; i < dg.Rows.Count; i++)
            {
                //if()
                DataGridViewComboBoxCell cbx = dg.Rows[i].Cells["fchraudit"] as DataGridViewComboBoxCell;
                //if (cbx.Value == "拒绝")
                //{
                //    break;
                //}
                if (cbx.Value != null)
                {
                    if (cbx.Value.Equals("拒绝"))
                    {

                    }
                }
                else
                {
                    cbx.Items.Clear();
                    cbx.Items.Insert(0, "同意");
                    cbx.Items.Insert(1, "拒绝");
                    cbx.Value = "同意";
                }
            }
        }
--------------------编程问答-------------------- 这个我遇到过,接下来把方法告诉你
用CellEnter事件
private void datagridview_CellEnter(object sender, DataGridViewCellEventArgs e)
{
 if (this.DgvPara.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn && e.RowIndex != -1)
            {
                SendKeys.Send("{F4}");
            }
}
同样,如果是textbox,可以把F4换成F2,其实就是进入编辑状态的快捷键。下拉框是F4,而文本框就是F2 --------------------编程问答-------------------- 更正下,上面的DgvPara改为datagridview --------------------编程问答-------------------- 希望能帮到你,是你要的结果。 --------------------编程问答-------------------- 楼主的功能最好在属性控件里实现 --------------------编程问答--------------------
引用 7 楼 fengconnie 的回复:
这个我遇到过,接下来把方法告诉你
用CellEnter事件
private void datagridview_CellEnter(object sender, DataGridViewCellEventArgs e)
{
 if (this.DgvPara.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn && e.……

谢谢你的回答,可是这个好像解决不了我的问题 --------------------编程问答--------------------
引用 10 楼 pig357 的回复:
楼主的功能最好在属性控件里实现

你说的属性控件是指什么呢?能详细说一下吗?谢谢呀 --------------------编程问答-------------------- 就是C#自带的属性控件啊,叫Property什么的。 --------------------编程问答-------------------- 类似于C#界面编辑时 左侧的【属性】栏 --------------------编程问答--------------------
引用 13 楼 pig357 的回复:
就是C#自带的属性控件啊,叫Property什么的。

哦,找到了,谢谢,我试一下 --------------------编程问答-------------------- Build a Custom RadioButton Cell and Column for the DataGridView Control
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,