在做项目时,涉及到用户自定义报表,即用户可以根据自己的喜好,选择报表中需要显示的列,并可以对这些列重新命名/排序等.这些功能由报表设计器来完成.
最初设想的是使用ListBox的SelectedIndexChanged事件,根据此事件,显示TextBox中的文本内容,并根据用户输入的新的文本内容,再次更改当前的SelectedItem的内容.不过,当更改SelectedItem时,又触发了SeletecIndexChanged事件.因此,此方法不可行.
后来使用ListBox的Click事件来完成.
本文章中,只是对于方法的简单介绍.因此其中的数据比较简单,且不完整.
首先定义数据列模型,它包含列默认名称/用户自定义名称/列类型/与数据匹配的字段名等.
代码如下:
/// <summary>
/// 数据列类型
/// </summary>
class DataColumn
5: {
/// <summary>
/// 默认列名
/// </summary>
string DefaultName;
10:
/// <summary>
/// 用户自定义列名
/// </summary>
string customName;
15:
/// <summary>
/// 此处需要提供CustomName属性,否则绑定时,DispalyMember无法正常显示.
/// (如果没有此属性,则绑定后显示为:LBTest.DataColumn)
/// </summary>
string CustomName {
return customName; }
value;}
23: }
24:
/// <summary>
/// 列的数据类型
/// </summary>
string DataType;
29:
/// <summary>
/// 字段名称
/// </summary>
string FieldName;
34:
#region 构造函数
public DataColumn()
37: {
;
;
;
string.Empty;
42: }
43:
string fieldName)
45: {
this.DefaultName = defaultName;
this.customName = customName;
this.DataType = dataType;
this.FieldName = fieldName;
50: }
#endregion 构造函数
52: }