C#中GridView隱藏列的方法
一開始解決這個問題的時候,查了google,發現都不是我想要的,在 GridViewColumn中,它有個屬性Width,如果設定為0,就沒有顯示出來,其實這個是虛假的,你可以把它再介面上拉長,因此不是我想要的。
後來在網上查到說是用GridView.Columns[columns].Visible = false;但是GridViewColumn.Columns[columns]是沒有Visible屬性的,因此這個方法對我來說也是不行的。於是我就想到了用x:Name的方法,這樣來做,
<GridView x:Name="gvGroups">
<GridViewColumn
x:Name="hideitem" />
</GridView>
在程式碼裡面用gvGroups.Columns.Remove(hideitem);把它去掉,就不顯示了,
如果想顯示的話,直接gvGroups.Columns.Add(hideitem);不過是把它放在最後的一列去了。
這樣算是解決了隱藏列的問題。
以下列出網上的一些方法,本人沒有嘗試,先記錄下來
======================================================
繫結時直接設定 某列隱藏,會出錯
下面有兩種方法,不僅可以隱藏,還仍然可以正常取值
方法一:
在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事件(隱藏)在繫結時候發生,所以這樣就即能將資料繫結到列上,又隱藏了該列.所
以可以訪問到隱藏列的值
方法二:
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() ;
}