« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
暂无公告... |
Blog信息 |
blog名称: 日志总数:18 评论数量:10 留言数量:1 访问次数:137582 建立时间:2005年11月22日 |

| |
[编程]GridColumn的DisplayFormat小讲述(C#) 电脑与网络
flymcx 发表于 2006/6/26 14:36:32 |
也许做.net开发的人有很多人都用了DevExpress的控件,DevExpress的GridControl控件比较复杂。而他的绑定列可以由GridColumn组成。由于GridControl很复杂,这里就只讲GridColumn的DisplayFormat。
例如你的数据库记录了一些状态,例如1,2,3。但实际1表示开通,2表示不开通,3表示待机。虽然你可以用sql的case表解决这个问题,或者用其它的方法。这里就讲用DisplayFormat方法。
例假前面定义了一个GridColumn gridColumn7,
代码如下gridColumn7.DisplayFormat.FormatType=DevExpress.Utils.FormatType.Custom;
BaseFormatter formatBase=new BaseFormatter();
gridColumn7.DisplayFormat.Format=formatBase;
formatBase.EventHandler+=new OverideFormat(formatBase_EventHandler);
private string formatBase_EventHandler(string format, object arg, IFormatProvider formatProvider) {
int state=int.Parse(arg.ToString());
if(state==1)
return "开通";
if(state==2)
return "不开通";
if(state==3)
return "待机"; }
/*其中formatBase是自己定义的一个类,因为DisplayFormat.Format属性是一个IFormatProvider接口,所以formatBase必须实现这个接口。这个接口里只有一个方法,string Format(string format, object arg, IFormatProvider formatProvider),这些参数,我们只要关心的是object arg。GridControl里加载数据的时候,会运行这个类的Format方法。而arg就是他原有的单元格的值。而format则是DisplayFormat.FormatString的值。对于formatProvider,他会调用formatBase和GetFormat(Type formatType),所以formatBase还要实现ICustomFormatter接口。*/
using System;namespace DisplaySimple{ public delegate string OverideFormat(string format,object arg,IFormatProvider formatProvider); /// <summary> /// BaseFormatter 的摘要说明。 /// </summary> public class BaseFormatter:IFormatProvider,ICustomFormatter { public event OverideFormat EventHandler; public BaseFormatter() { // // TODO: 在此处添加构造函数逻辑 // } #region ICustomFormatter 成员 public string Format(string format, object arg, IFormatProvider formatProvider) { // TODO: 添加 BaseFormatter.Format 实现 if(EventHandler!=null) return EventHandler(format,arg,formatProvider); return arg.ToString(); }
#endregion
#region IFormatProvider 成员
public object GetFormat(Type formatType) { // TODO: 添加 BaseFormatter.GetFormat 实现 if (formatType == typeof (ICustomFormatter)) return this; else return null; }
#endregion }}
/*
*/
|
|
回复:GridColumn的DisplayFormat小讲述(C#) 电脑与网络
Kinogam发表评论于2006/6/26 15:27:17 |
|
» 1 »
|