上标的问题通过后台的c#代码实现了
经常在网上看到,尽量不要用gridview这样的控件,但是项目中已经用到这样的控件了,如果将其改为其他控件,则会浪费很多时间,于是当遇到问题时会尽力解决问题,而非推翻之后重做。
对于gridview控件的HeaderText应当如何实现上下标呢?如下:
<asp:GridViewID="GridView1"runat="server">
<Columns>
………………………..
<asp:BoundFieldDataField="ljzy"HeaderText="累计增油(104t)"/>
…………………………
</Columns>
</asp:GridView>
以上代码是存放在**.aspx页面中的,位于<html></html>标签中,为此,我们将这些代码称作位于前台。我试了很多方法,希望能够在HeaderText的值中直接赋予带有上标的字符串,即,104,但是没有实现。于是我转而去.cs文件中去寻找解决办法,由于.cs文件中均是由c#代码写成,于是我们称作后台。最后我找到了解决办法,方法是在page_load[注1]函数中做如下赋值操作:
GridView11.HeaderRow.Cells[2].Text =Server.HtmlDecode ("(10<sup>4</sup>t)");
下面是对以上语句进行解释:
l HeaderRow:获取gridview的标题行对象
l Cells:获取行的单元格对象。Cells[2]则表示第三个单元格
l Server:获取server对象,它是system.web.httpserverutility类的实例
l HtmlDecode:Server的方法,对html编码的字符串进行解码。
l <sup></sup>:通过html标签来实现上标的文字排版效果。下标的表示方法是:<sub></sub>
最后的结果为:
注1:不能在page_init函数中做如下操作:
GridView11.HeaderRow.Cells[2].Text +=Server.HtmlDecode ("(10<sup>4</sup>t)");
因为此时会引发“未将对象引用设置到对象的实例” 错误,一般是下面的原因:
l ViewState对象为Null。
l DateSet为空。
l sql语句或Datebase的原因导致DataReader空。
l 声明字符串变量时未赋空值就应用变量。
l 未用new初始化对象。
l Session对象为空。
l 对控件赋文本值时,值不存在
l 使用Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初始值
l 使用FindControl时,控件不存在却没有做预处理
l 重复定义造成未将对象引用设置到对象的实例错误
浙公网安备 33010602011771号