使用 DataTable.ExtendedProperties 在网格中显示有限数量的列
Posted
技术标签:
【中文标题】使用 DataTable.ExtendedProperties 在网格中显示有限数量的列【英文标题】:Displaying limited number of columns in grid using DataTable.ExtendedProperties 【发布时间】:2014-08-01 13:34:53 【问题描述】:我想在连接到作为数据源的 DataTable 的网格中显示有限数量的列。在我发现的一个示例中,它使用属性 ExtendedProperties 来定义列标题的显示方式、顺序以及选择的列。但是,当我使用它时,显示的列、顺序和数字与原始 DataTable 中的相同。
谁能看出我做错了什么?
这是代码的子集。这只是客户的桌子:
// initialize db connection variables
string conn = GetConnectionString();
// load some tables
string[] tables = "Customers, Orders, Order Details, Products, Employees, Shippers".Split(',');
foreach (string tableName in tables)
FillTable(_ds, tableName, conn);
dt = _ds.Tables["Customers"];
// re-arrange the columns on the customer table
//
dt.ExtendedProperties.Add("ShowColumns", new string[]
"CustomerID, Customer",
"OrderCount, Orders",
"CompanyName, Company",
"ContactName, Contact",
"Phone",
"City",
"Region",
"Country",
);
// show customers to begin with
_flex.SetDataBinding(_ds, "Customers");
设置列的方法:
// customize grid display to show selected columns, captions, formats, and data maps
void _flex_SetupColumns(object sender, System.EventArgs e)
// get grid that was just bound
C1FlexDataTree grid = sender as C1FlexDataTree;
if (grid == null || grid.DataSource == null)
return;
// get source DataTable
CurrencyManager cm = (CurrencyManager)BindingContext[grid.DataSource, grid.DataMember];
DataTable dt = ((DataView)cm.List).Table;
// apply custom column order, captions, format
string[] columns = dt.ExtendedProperties["ShowColumns"] as string[];
if (columns != null)
SetupColumns(grid, columns);
// apply custom data maps
foreach (Column gridColumn in grid.Cols)
DataColumn dataColumn = dt.Columns[gridColumn.Name];
if (dataColumn == null) continue;
gridColumn.DataMap = dataColumn.ExtendedProperties["DataMap"] as IDictionary;
if (gridColumn.DataMap != null)
gridColumn.TextAlign = TextAlignEnum.LeftCenter;
// all done, autosize to show mapped data
if (grid.AutoResize)
grid.AutoSizeCols(12);
永远不会调用“SetupColumns”方法。
【问题讨论】:
【参考方案1】:我想通了。我的问题是我没有在网格中定义事件,所以它没有触发。一旦我这样做了,它就可以正常工作了。
【讨论】:
以上是关于使用 DataTable.ExtendedProperties 在网格中显示有限数量的列的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)