Asp.net 2.0 GridView隱藏列visible="false" 後你就無法取得這列的值了, 而用datagrid就沒有這個問題, MS這個混蛋老是改變游戲規則, 幸好我聰明, 在百度上搜到了別人的解決方法, 然後加入了自己的方法, 才解決問題:
protected void GVList_RowDataBound(object sender, GridViewRowEventArgs e)
{
//隱藏不必要的列
if ((e.Row.RowType == DataControlRowType.DataRow) (e.Row.RowType == DataControlRowType.Header) (e.Row.RowType == DataControlRowType.Footer))
{
e.Row.Cells[0].Visible = false;
e.Row.Cells[3].Visible = false;
}
}
這是迄今為止最簡潔的解決方法了。
解決方案
在RowCreated事件中書寫如下代碼:
void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow
e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Visible = false; //如果想使第1列不可見,則將它的可見性設為false
}
//可以根據需要設置更多的列
}
因為在RowCreated事件(隱藏)在綁定時候發生,所以這樣就即能將數據綁定到列上,又隱藏了該列.所以可以訪問到隱藏列的值。
下面介紹另外一個可以將數據綁定到GridView控件的方法:
Public void myTestFunction()
{
string conString="....";//省略
string sqlquery="...";//省略
SqlConnection con = new SqlConnection(conString);
SqlDataAdapter da = new SqlDataAdapter(sqlquery, con);
DataSet ds = new DataSet();
da.Fill(ds);
ds.Tables[0].Columns[0].ColumnMapping = MappingType.Hidden;
GridView1.DataSoUCe = ds.Tables[0];
GridView1.DataBind() ;
}
文章主要講述了ASP.NET2.0中GridView控件的隱藏列的問題.