Mat*_*ser 5 .net c# gridview asp.net-2.0
我的aspx页面上有一个GridView,它显示由以下类定义的对象集合
public class Item
{
public string ItemName{get; set;}
public object ItemValue{get; set;}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的aspx标记中我有这样的东西
<asp:GridView ID="MyTable" runat="server">
<Columns>
<asp:BoundField DataField="ItemName" />
<asp:BoundField DataField="ItemValue" />
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
我想知道的是:
有没有办法在ItemValue字段上使用条件格式,这样如果对象持有字符串,它将返回不变的字符串,或者如果它保持DateTime,它将显示为DateTime.ToShortDateString( ).
Pau*_*and 12
不确定是否可以使用BoundField,但如果将其更改为TemplateField,则可以使用此链接中的格式化函数.
即类似的东西
<%# FormatDataValue(DataBinder.Eval(Container.DataItem,"ItemValue")) %>
Run Code Online (Sandbox Code Playgroud)
然后在您的代码隐藏中,您可以添加受保护的函数
Protected Function FormatDataValue(val as object) As String
'custom enter code hereformatting goes here
End Function
Run Code Online (Sandbox Code Playgroud)
或者您可以在gridview的OnRowCreated事件中执行某些操作,就像在此链接中一样
<asp:GridView ID="ctlGridView" runat="server" OnRowCreated="OnRowCreated" />
Run Code Online (Sandbox Code Playgroud)
此函数是基于datavalue是否为null /为double的条件格式
protected void OnRowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView drv = e.Row.DataItem as DataRowView;
Object ob = drv["ItemValue"];
if (!Convert.IsDBNull(ob) )
{
double dVal = 0f;
if (Double.TryParse(ob.ToString(), out dVal))
{
if (dVal > 3f)
{
TableCell cell = e.Row.Cells[1];
cell.CssClass = "heavyrow";
cell.BackColor = System.Drawing.Color.Orange;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)