上标的问题通过后台的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       HtmlDecodeServer的方法,对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       重复定义造成未将对象引用设置到对象的实例错误

posted @ 2010-12-16 00:25  漂-还在路上  阅读(184)  评论(0)    收藏  举报