xtraGrid编程问题解答

也就是删除的时候,提示一下“确定要删除吗?”。这个问题特指使用内置的导航按钮时。

 
经过多次试验,解决了。方法如下:
在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.其实没有了。写一个凑数。运行程序即可。呵呵。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值