也就是删除的时候,提示一下“确定要删除吗?”。这个问题特指使用内置的导航按钮时。
在navigator_click事件中处理写如下代码(我使用的是伪代码,以描述为主)。
如要删除,grid.DeleteRow(grid.FocusedRowHandle);update提交删除;
如不删除,任何事情都不做,仅设置e.handle=true;
如何设置编程日期类型的列的过滤条件
这个我经过试验,发现,使用自定义过滤条件对话框时,没有任何问题,一切正常。但,如果编程直接赋值,
Dim filterstring As String
filterstring = "[EventDate] >= '" & FromDate & "' AND [EventDate] =< '" & ToDate & "'"
Dim DateFilter As New DevExpress.XtraGrid.Columns.ColumnFilterInfo(filterstring)
colEventDate.FilterInfo = DateFilter
其结果是日期类型以字符串的方式比较的,结果不正确。
在网上查了一个方法,未经证实,先记录如下:
[VB.NET]
Imports DevExpress.Data.Filtering
Imports DevExpress.XtraGrid.Columns;
Dim FromDate, ToDate As DateTime
FromDate = ...
ToDate = ...
Dim BinaryFilter As CriteriaOperator
Dim FilterString, FilterDisplayText As String
Dim DateFilter As ColumnFilterInfo
BinaryFilter = New GroupOperator(GroupOperatorType.And, _
New BinaryOperator("EventDate", FromDate, BinaryOperatorType.GreaterOrEqual), _
New BinaryOperator("EventDate", ToDate, BinaryOperatorType.Less))
FilterString = BinaryFilter.ToString()
FilterDisplayText = String.Format("Event Date between {0:d} and {1:d}", FromDate, ToDate)
DateFilter = New ColumnFilterInfo(FilterString, FilterDisplayText)
colEventDate.FilterInfo = DateFilter
自定义统计方式的使用
今天研究了会儿自定义统计功能。在设计时,可以添加COUNT、AVG、MAX等统计方式,可以设置其显示的位置(在表格下部还是在分组行上)。统计方式中还有个Custom,这个是干什么用的呢?
如果表格里有一个字段有重复值,而要统计共有多少个不同的值时(就相当于使用了distinct),这个统计方式就派上用场了。在SQL语句里,使用一个关键字distinct就搞定了的事,在xtraGrid里可以有些费事。下面我来讲解一下大致的过程。
1.不用说了,在设置窗体里,添加自定义的统计,设定好对应的字段,其方式设置为:Custom
2.处理表格(GridView)的CustomSummaryCalculate的事件,代码如下所示。
//这个注意要保证统计类型为Custom,才能正确统计
int summaryCount;
Hashtable summaryHash;
private void MyCustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)
{
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
{
summaryHash = new Hashtable();
summaryCount = 0;
}
else if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
{
if (e.FieldValue != null && !summaryHash.Contains(e.FieldValue))
{
summaryHash.Add(e.FieldValue, 1);
summaryCount++;
}
}
else if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
{
e.TotalValue = summaryCount;
e.TotalValueReady = true;
summaryHash.Clear();
summaryHash = null;
}
}
3.其实没有了。写一个凑数。运行程序即可。呵呵。