【整理】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檔案裡已經定義過。