日期:2014-05-20  浏览次数:20454 次

新手求问ViewState
SqlConnection   conn   =   new   SqlConnection( "连接字符串 ");
conn.Open();

DataSet   ds   =   new   DataSet();
string   sql   =   "sql语句 ";
SqlDataAdapter   da   =   new   SqlDataAdapter(sql,   conn);
da.Fill(ds);
for   (int   i   =   0;   i   <=   ds.Tables[0].Rows.Count   -   1;   i++)
{
        if   ((byte)ds.Tables[0].Rows[i][ "IsDisplay "]   ==   0)
        {
                        ((ComponentArt.Web.UI.Grid)sender).Levels[0].Columns[i].Visible   =   false;
        }
}

这是一个数据绑定的方法,但因为访问的是每一列,因此有可能会造成超时的问题..
能否把DataSet添加到viewstate?这样有用吗?
有用的问,怎么加?谢谢了..

------解决方案--------------------
"这是一个数据绑定的方法,但因为访问的是每一列,因此有可能会造成超时的问题.. "

猜想你的这个超时不是因为访问每一列造成的,应该是你填充Dataset时造成的,可以设一下
SqlConnection.ConnectionTimeOut属性或
SqlCommand.CommandTimeOut
------解决方案--------------------
能否把DataSet添加到viewstate?这样有用吗?? ?
那恐怕不好使
另:
conn.close();怎么没有?
------解决方案--------------------
看贴出来的代码意思,每一行都要调用da.Fill(ds);
不能只Fill一次,遍历ComponentArt.Web.UI.Grid的行吗?
------解决方案--------------------
但因为访问的是每一列,因此有可能会造成超时的问题..
————————————————————————————————————————
一点都没有看懂这句话的意思。

如果说数据库连接应该如何写,你的代码可以为:

DataSet ds = new DataSet();
string sql = "sql语句 ";
using(SqlConnection conn = new SqlConnection( "连接字符串 "))
{
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(ds);
}
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
if ((byte)ds.Tables[0].Rows[i][ "IsDisplay "] == 0)
{
((ComponentArt.Web.UI.Grid)sender).Levels[0].Columns[i].Visible = false;
}
}

------解决方案--------------------
学会写Using结构化语句,你可以写较专业和可靠的程序——不用写很多废话就能提早、很可靠地关闭连接。