GridView中的列表框或文本框

时间:2013-10-21 16:09:45

标签: c# vb.net winforms visual-studio-2010 devexpress

我有一个gridview,根据每行的数据类型,我想显示一个文本框或列表框。

如何根据gridview每行的数据类型显示列表框或文本框。

Obs *我正在使用devexpress控件,所以我会接受这两个答案,适用于Windows窗体标准控件或devexpress套件。

谢谢大家。

3 个答案:

答案 0 :(得分:0)

我的问题不清楚根本,但也许您有自定义的行类型并且正在尝试做类似的事情

public class ListBoxRow : Row {}
public class TextBoxRow : Row {}

List<Row> rows = new List<Row>(){new ListBoxRow(), new TextBoxRow()}

foreach (Row r in rows)
{
    If (r is ListBoxRow) {//Create ListBox }
    If (r is TextBoxRow ) {//Create TextBox }
}

答案 1 :(得分:0)

您可以利用Designer中的一个内置事件(如ShowingEditor)并通过从事件的args获取行的句柄来检查行的类型。然后,您可以找出您的类型,并创建Listbox或Textbox的新实例。您可以在此处阅读更多文档:

Dev Express ShowingEditor Event Docs

如果你想在代码中执行此操作,在初始化视图后,你可以使用gridview并执行类似的操作(在C#中):

this.myGridView.ShowingEditor += (sender, args) => 
{ 
    var gridView = sender as GridView;

    if(null != gridView)
    {
        var currentRowHandle = gridView.FocusedRowHandle;
        var currentType = gridView.Rows[currentRowHandle].GetType();

        if(currentType == typeof(TypeA))
        {
             //Make a ListBox
        }

        if(currentType == typeof(TypeB))
        {
            //Make a TextBox
        }
    }
}

显然这里要写的代码更多,但我认为这会让你开始。

答案 2 :(得分:-1)

你可以使用一种风格,here一篇带有一些例子的文章,我希望你喜欢它。