请问如何在ASP。NET中定义一个全局变量?
我在一个DataGrid里需要重复用到一组数据。所以我想在Page_Load里写一个函数,把从数据库取来的数据先写到一个public的Hashtable里。但是我写进去的东西只有在Page_Load里能读。到了别的函数里就读不出来了。 不知道是什么原因。我以前也做过一个类似的东西。但是当时是好读的,这次却不行。怪哉~~
<script language="c#" runat="server">
public Hashtable htUser;
void Page_Load()
{
if(!IsPostBack)
{
htUser=GetUserName();
}
}
Hashtable GetUserName()
{
SqlConnection conn=new SqlConnection(ConfigurationSettings.AppSettings["strConn"]);
SqlCommand sc=new SqlCommand("SELECT id,truename FROM users WHERE id IN(SELECT id FROM permit WHERE xzxxhf=1)",conn);
SqlDataReader sdr;
Hashtable htUser=new Hashtable();
conn.Open();
sdr=sc.ExecuteReader();
while(sdr.Read())
{
htUser.Add(sdr["id"].ToString(),sdr["truename"].ToString());
}
sdr.Close();
conn.Close();
return(htUser);
}
string GetUser(string id)
{
return(Convert.ToString(htUser[id]));
}
我在DataGrid里最后一列绑定数据的时候要用到
<asp:TemplateColumn
HeaderText="已经转给"
HeaderStyle-Width="50"
ItemStyle-Width="50">
<ItemTemplate>
<%#GetUser(Convert.ToString(DataBinder.Eval(Container.DataItem,"towho")))%>
</ItemTemplate>
</asp:TemplateColumn>
可是总是出现这样的错误提示:
System.NullReferenceException: 未将对象引用设置到对象的实例。
也就是说我的htUser在GetUser函数里没有被保存状态
但是我在Page_Load里的(!IsPostBack)里的确已经给htUser赋值了。
怪事,请知道原因的高手一定要帮忙~~