BoundColumn.DataFormatString 属性

本文介绍了 ASP.NET 中 GridView 控件 DataFormatString 属性的使用方法,包括如何通过不同的格式化字符串来展示数字、日期等数据,并提供了具体的示例。

获取或设置指定列中各项的显示格式的字符串。

命名空间:System.Web.UI.WebControls
程序集:System.Web(在 system.web.dll 中)



 

属性值
指定列中各项的显示格式的格式化字符串,默认值为 String.Empty。

使用 DataFormatString 属性来提供列中各项的自定义格式。

  数据格式字符串由以冒号分隔的两部分组成,形式为 { A : Bxx }。例如,格式化字符串 {0:F2} 将显示带两位小数的定点数。  

  整个字符串必须放在大括号内,表示它是格式字符串,而不是实际字符串。大括号外的任何文本均显示为实际文本。

  冒号前的值指定在从零开始的参数列表中的参数索引。值只能设置为 0,因为每个单元格中只有一个值。

  冒号后的字符指定值的显示格式。下表列出了一些常用格式。

格式字符
 说明
 
C
 以货币格式显示数值。
 
D
 以十进制格式显示数值。
 
E
 以科学记数法(指数)格式显示数值。
 
F
 以固定格式显示数值。
 
G
 以常规格式显示数值。
 
N
 以数字格式显示数值。
 
X
 以十六进制格式显示数值。


MSDN示例:

<asp:BoundColumn HeaderText="Item" DataField="Item" ReadOnly="True" /> <asp:BoundColumn HeaderText="Quantity" DataField="Qty" DataFormatString="{0:N0}"/> <asp:BoundColumn HeaderText="Price" DataField="Price" DataFormatString="{0:c}" /> <asp:BoundColumn HeaderText="Weight" DataField="Weight" ReadOnly="True" DataFormatString="{0:F3}" /> <asp:BoundColumn HeaderText="Expires" DataField="Expires" ReadOnly="True" DataFormatString="{0:g}" />


格式日期: DataFormatString="{0: yyyy-MM-dd}"   

格式时间:DataFormatString="{0: hh:mm:ss}"  

说明: 大写的M是 Month,小写的m是minute ,注意区别大小写,C#里其它时候了是这样的用法,要区别大小写。



格式字符串 输入 结果
"{0:C}" 12345.6789 $12,345.68
"{0:C}" -12345.6789 ($12,345.68)
"{0:D}" 12345 12345
"{0:D8}" 12345 00012345
"{0:E}" 12345.6789 1234568E+004
"{0:E10}" 12345.6789 1.2345678900E+004
"{0:F}" 12345.6789 12345.68
"{0:F0}" 12345.6789 12346
"{0:G}" 12345.6789 12345.6789
"{0:G7}" 123456789 1.234568E8
"{0:N}" 12345.6789 12,345.68
"{0:N4}" 123456789 123,456,789.0000
"Total: {0:C}" 12345.6789 Total: $12345.68

其常用的日期格式如下表所示:

格式 说明 输出格式
d 精简日期格式 MM/dd/yyyy
D 详细日期格式 dddd, MMMM dd, yyyy
f 完整格式 (long date + short time) dddd, MMMM dd, yyyy HH:mm
F
完整日期时间格式
(long date + long time)
dddd, MMMM dd, yyyy HH:mm:ss
g 一般格式 (short date + short time) MM/dd/yyyy HH:mm
G 一般格式 (short date + long time) MM/dd/yyyy HH:mm:ss
m,M 月日格式 MMMM dd
s 适中日期时间格式 yyyy-MM-dd HH:mm:ss
t 精简时间格式 HH:mm
T 详细时间格式 HH:mm:ss

转载于:https://www.cnblogs.com/sjjsky/archive/2008/12/17/1356721.html

### WPF DataGrid SelectedCells 使用绑定路径通过反射修改对象属性值的代码解析 在 WPF 中,`DataGrid.SelectedCells` 提供了一种访问当前选中单元格的方式。这些单元格可以用于执行各种操作,比如获取它们的内容、更新绑定的数据源或动态调整样式等。为了实现通过反射修改绑定对象的属性值,以下是详细的解析。 #### 1. `DataGrid.SelectedCells` 基本概念 `SelectedCells` 是一个只读集合,表示当前被选中的单元格列表。每个单元格由 `DataGridCellInfo` 对象表示,其中包含了关于该单元格的信息,例如列索引、行索引及其关联的数据项[^2]。 #### 2. 绑定路径的作用 绑定路径通常是一个字符串形式的表达式,指定了目标属性相对于数据上下文的位置。对于复杂对象模型来说,它可能涉及嵌套属性(如 `Person.Address.City`)。要通过反射找到并修改指定的对象属性,需要解析此路径以定位实际的目标字段或属性[^1]。 #### 3. 反射机制概述 .NET Framework 提供了强大的反射功能,允许程序运行时检查类型元数据,并调用方法或更改实例成员的状态而无需事先知道具体类名或其他细节。这里的关键步骤包括加载正确的Assembly, 获取Type信息, 查找Field/Property descriptors 和最终赋新值给它们. #### 4. 实现方案 下面展示一段示例代码,演示如何遍历 `DataGrid.SelectedCells` 并利用反射技术依据绑定路径去设定相应的属性: ```csharp foreach (var cell in dataGrid.SelectedCells) { var column = cell.Column as DataGridColumn; string bindingPath = null; if (column is DataGridBoundColumn boundColumn && boundColumn.Binding != null) { Binding bindingExpression = boundColumn.Binding as Binding; if (bindingExpression != null) bindingPath = bindingExpression.Path.Path; // Get the property name from Path object. } if (!string.IsNullOrEmpty(bindingPath)) { var item = cell.Item; // The row's DataContext that contains this cell’s value. SetPropertyValueUsingReflection(item, bindingPath, newValue); } } // Helper method to set a property using reflection based on its path and new value. private void SetPropertyValueUsingReflection(object targetObject, string propertyNameChain, object newValue) { try { PropertyInfo currentProp = null; object intermediateResult = targetObject; foreach (string part in propertyNameChain.Split('.')) { Type typeOfCurrentLevel = intermediateResult.GetType(); currentProp = typeOfCurrentLevel.GetProperty(part); if (currentProp == null || !currentProp.CanWrite) throw new InvalidOperationException($"Cannot find writable property '{part}'."); if ((intermediateResult = currentProp.GetValue(intermediateResult)) == null) break; } if (currentProp != null) currentProp.SetValue(targetObject, Convert.ChangeType(newValue, currentProp.PropertyType)); } catch(Exception ex) { Console.WriteLine(ex.Message); } } ``` 上述代码片段展示了如何迭代已选定的单元格[`^2`] ,提取每列所对应的绑定路径 [`^1`] , 然后再应用自定义的帮助函数 `SetPropertyValueUsingReflection()` 来完成基于反射的实际属性设置过程。 ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值