|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么?在SmartGrid控件的列供应了Format属性来让我们格局化单位格中的数据,但这个属功能完成的效果无限,假如一些绝对庞大的格局化需求就没法完成了,这章我们就演示假如使用FormatFunction函数来格局化单位格数据。
本章我们要完成的功效是:
假如我们在SmartGrid的列中填进一个年夜于0的数字时,数字以白色显现,假如我们在SmartGrid的列中填进一个小于0的数字时,数字以绿色显现。
经由过程这个示例演示怎样自界说单位格中的数据格局。
起首在页面放进一个SmartGrid控件,并为列"price"设置FormatFunction属性的值。
<SmartWeb:SmartGridID="SmartGrid1"runat="server"ReadOnly="false"DataKeyField="ID"AllowDelete="true"AllowAdd="true">
<Columns>
<SmartWeb:TextBoxColumnColumnName="price"HeaderText="单价"FormatFunction="myformat"
DataType="System.Decimal"/>
</Columns>
</SmartWeb:SmartGrid>
然后在页面的js中界说FormatFunction办法:
<scripttype="text/javascript"language="javascript">
functionmyformat(val,format,digits){
if(parseInt(val)>0){
return"<fontcolor=red>"+val+"</font>";
}
elseif(parseInt(val)<0){
return"<fontcolor=green>"+val+"</font>";
}
returnval;
}
</script>
运转页面,并在SmartGrid的Price分离填进数字1,0,-1,可看到效果以下:
页面按我们的请求以白色显现了1,绿色显现了-1,测试乐成!
能够看到下面的myformat办法中有三个参数,意义分离以下:
val--以后单位格的值,
format--SmartGridColumn类Format属性值
digits--SmartGridColumn类Scale属性值
有伴侣说,FormatFunction是否是只要在可编纂的列中才无效呢?固然不是,我们能够将上例中的TextBoxColumn列改成SmartGridColumn列,并在背景为SmartGrid中赋值看效果。
<SmartWeb:SmartGridID="SmartGrid1"runat="server"ReadOnly="false"DataKeyField="ID"AllowDelete="true"AllowAdd="true">
<Columns>
<SmartWeb:SmartGridColumnColumnName="price"HeaderText="单价"FormatFunction="myformat"
DataType="System.Decimal"/>
</Columns>
</SmartWeb:SmartGrid>
然后在背景为SmartGrid赋值:
protectedvoidPage_Load(objectsender,EventArgse)
{
DataTabledt=newDataTable();
dt.Columns.Add("price",typeof(decimal));
dt.Rows.Add(1);
dt.Rows.Add(0);
dt.Rows.Add(-1);
this.SmartGrid1.DataSource=dt;
this.SmartGrid1.DataBind();
}
效果以下:
测试乐成,申明FormatFunction对SmartGridColumn一样是无效的。
注重:只要设置了列的DataType为非字符范例(如System.Decimal、System.DateTime)才可挪用FormatFunction格局化函数。
我想上位伴侣是否是由于健忘设置DataType属性而使设置有效呢:),再细心测试一下吧。一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。 |
|