1. 程式人生 > >【整理】C#中GridView隱藏指定列的方法

【整理】C#中GridView隱藏指定列的方法

試了好幾種方法,總算成功了。

(1)在GridView的標籤處設定OnRowCreated="GridView1_RowCreated" ;

(2)在RowCreated事件中書寫如下程式碼

   void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
     {

             //根據所需條件判斷是否可視
             e.Row.Cells[0].Visible = false; //如果想使第1列不可見,則將它的可見性設為false
     }

============================================================================

試了其他方法,都不順利,細節處講得不明白或是提示錯誤(比如:莫名其妙出現【不包含“GridView1”的定義】),記錄下供以後參考。

方法1:

autogeneratecolumns屬性---表示列的自定義產生
在cs檔案中多加一行程式碼,其思路如下:
(1)設定一個css類: 
     <style> 
     .hidden{display:none;} 
     </style>
(2)隨後在GridView的列編輯對話方塊中,對需要進行隱藏的列進行設定,分別設定FootStyle,HeaderStyle,ItemStyle的CssClass屬性為“hidden”
Ok,這樣我們就實現了隱藏列的目的,同時又能保證對其進行資料繫結。

隱藏列的值
在RowCreated事件中書寫如下程式碼
   void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
     {
         e.Row.Cells[0].Visible = true;   //如果想使第1列不可見,則將它的可見性設為false
        //可以根據需要設定更多的列
     }
     因為在RowCreated事件(隱藏)在繫結時候發生,所以這樣就即能將資料繫結到列上,又隱藏了該列.所
以可以訪問到隱藏列的值
   dt.Columns[0].ColumnMapping = MappingType.Hidden; //隱藏

--------為gridview控制元件裡的“刪除”列新增一個確認對話方塊----------------------
在刪除按鈕的那一列屬性裡面,把DeleteText屬性設為
可以時img標籤
<div id="de" onclick="JavaScript:return confirm('確定刪除嗎?')">刪除</div>

方法2

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

方法3:

一開始解決這個問題的時候,查了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);不過是把它放在最後的一列去了。

這樣算是解決了隱藏列的問題。

方法4:

protected void Page_Load(object sender, EventArgs e)
    {
        //這裡可以根據自己的判斷來隱藏某列
        this.GridView1.Columns[0].Visible = false;  //把第一列隱藏
}

這個方法嘗試了,很奇怪,出現以下問題:“_Default”不包含“GridView1”的定義,並且找不到可接受型別為“_Default”的第一個引數的擴充套件方法“GridView1”(是否缺少 using 指令或程式集引用?)。明明在aspx檔案裡已經定義過。