C# 如何在没有Summize布局的情况下清除ultragrid的所有数据和布局
有没有办法在不删除其摘要行的情况下设置UltraGrid的数据源 我的Windows窗体应用程序中有一个ultragridC# 如何在没有Summize布局的情况下清除ultragrid的所有数据和布局,c#,winforms,ultrawingrid,C#,Winforms,Ultrawingrid,有没有办法在不删除其摘要行的情况下设置UltraGrid的数据源 我的Windows窗体应用程序中有一个ultragridgvResult 用户可以选择列并以另一种形式对它们进行排序,然后通过按“应用”按钮将这些更改应用于gvResult 此外,gvResult必须显示行计数器摘要 在应用用户的更改之前,我清除了gvResult,否则排序算法不会更改为用户设置的 gvResult.DataSource = new DataTable(); gvResult.DataSource = dataTa
gvResult
用户可以选择列并以另一种形式对它们进行排序,然后通过按“应用”按钮将这些更改应用于gvResult
此外,gvResult
必须显示行计数器摘要
在应用用户的更改之前,我清除了gvResult,否则排序算法不会更改为用户设置的
gvResult.DataSource = new DataTable();
gvResult.DataSource = dataTable_With_New_Set_And_Sort_of_Columns;
这是另一个问题!它还会删除行计数器摘要以及gvResult
的其他布局设置。我继续搜索,发现了以下代码;然而,第一个问题仍然存在。列排序不会更改
BindingSource bs = new BindingSource();
bs.DataSource = typeof(DataTable);
bs.DataSource = dataTable_With_New_Set_And_Sort_of_Columns;
gvResult.DataSource = bs;
你有什么建议吗
对不起,我的英语很差
编辑:我尝试了下面这样的方法,但再次无效:
DataTable dtTest = new DataTable();
dtTest.Rows.Clear();
dtTest = Method_That_Returns_DataTable_With_New_Set_And_Sort_of_Columns();
gvResult.DataSource = dtTest.Copy();
穆莫哈拉比
如果我知道你想怎么做,这可能对你有用
每当您将数据绑定到UltraGrid时,每次都会触发InitializeLayout
事件,因此您需要确保将摘要行设置为在InitializeLayout
函数中可见
像这样:
private void yourUltraGrid_InitializeLayout(object sender, InitializeLayoutEventArgs e)
{
// Define Global settings like you usually do
// ....
// Configure your UltraGrid columns.
//// ID
//// Caption: "ID"
e.Layout.Bands[0].Columns[ColumnKeyA].Header.Caption = "ID";
e.Layout.Bands[0].Columns[ColumnKeyA].Header.VisiblePosition = 0;
e.Layout.Bands[0].Columns[ColumnKeyA].Width = 50;
// Any additional settings you may want for this column.
// Repeat for each column...
// Then add this block under each column you want to add Summary value to.
// This if function is critical to avoid summary rows from duplicating itself.
// Check to see if the Summary does not exist.
if (!e.Layout.Bands[0].Summaries.Exists("yourSummaryKey"))
{
// If it doesn't exist, create the summary.
SummarySettings summary;
summary = e.Layout.Bands[0].Summaries.Add("yourSummaryKey", SummaryType.Sum,
e.Layout.Bands[0].Columns[ColumnKeyA]);
// Change the Display Formatting if you desire.
// This display format will change it to just numbers
// instead of "Sum = 1234"
summary.DisplayFormat = "{0}";
// Change the horizontal alignment for the cell text.
summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Left;
// Apply any other settings to this summary column
// if needed.
// ...
}
}
注意:摘要行仅适用于父波段。无法为子标注栏设置摘要行
如果要重置数据网格,请将以下内容添加到代码中(但不在InitializeLayout函数中)
这将保留对排序算法所做的任何更改。因此,在本例中:如果用户对UltraGrid进行了任何更改,并随之更改了排序算法。单击“重置”按钮将仅还原数据,而不是排序算法
希望这有帮助。是否尝试过
bs.Clear()
?您好,spajce,是的,我尝试过,但收到了“无法清除此列表”错误。请尝试清除您的数据表
→ <代码>gvResult.Clear()你是说我的ultragrid吗?因为gvResult是一个ultragrid。但是ultragrid没有任何Clear()方法。这是什么dataTable\u,包含\u New\u Set\u和\u Sort\u列
?没有类似的dataTable\u和列的\u New\u Set\u和列的\u Sort\u.Rows.Clear()
或dataTable\u和列的\u New\u Set\u和列的\u Sort\u.Clear()
?
private void btnReset_Click(object sender, EventArgs e)
{
yourUltraGrid.DeleteSelectedRows();
// This will trigger the yourUltraGrid_InitializeLayout event
// and will ensure the column settings are defined.
yourUltraGrid.DataSource = Prototype.ugGetResourcePlanning();
}