1. 程式人生 > >C#中GridView隱藏列的方法

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() ;

}