2016-01-19 87 views
0

我遇到了我們並檢查了不同的網頁,但我沒有找到我正在尋找的那個。我有一個gridview,我只想隱藏基於單元格中的值的行之一。如何隱藏GridView中的行

我需要發生的是像在這樣的邏輯:備案

if (row = "someValue") 
{ 
row.Visible = false; 
} 

,我都試過,但沒有運氣:

 protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     DataRow row = ((DataRowView)e.Row.DataItem).Row; 
     string oRoleName = row.Field<string> ("SVal"); 
     if (oRoleName.Equals ("someValue")) { 
      e.Row.Visible = false; 
     } 
    } 

這不是基地天氣行是第一個第二個或第三個(如:e.row [1],e.row [2]等)我需要過濾數據庫的行中的值。任何人都可以教我如何做到這一點?

希望有任何幫助。

+0

試試這個實現RowDataBound,檢查DataRow類型和你的值;如果匹配e.Row.Visible = false; – techspider

+0

jquery或javascript可以用前端做到,後端gridview事件可以做同樣的事情。順便說一下,我現在沒有電腦,請告訴我,如果您在9小時後還沒有得到該示例,我會提供示例代碼。 –

+0

儘可能多的我需要在c#中獨自完成這個工作,而不是在js,json jquery等中。 – OneLazy

回答

1

在RowDataBound事件沿着這個邏輯的線條添加一些

if (e.Row.Cells[5].Text == "foo") { 
e.Row.Visible = false; 
} 

編輯:

如果您是在尋找錯誤地檢查每一行的值作爲其進入(除非IM的瞭解,你應該可能會擴展你的問題。) 然後,你可能想要使用事件「CellValueChanged」 檢查,以確定該單元格是否爲空,然後做檢查你的價值,並相應地應用下面的邏輯。

 private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
    { 
     if (dataGridView1.CurrentCell != null) { 
     if (dataGridView1.CurrentCell.Value.ToString() == "foo") 
     { 
      // do your stuff here. 
     } 
     } 
    } 
+0

它是單元格[5] sir,它不一定是單元格的數量,而是單元格的值,因爲我在gridview中查找的行每次都會更改單元格的數值,因爲每次都是用戶添加行。 – OneLazy

+0

道歉,如果我讓你誤解。我想說的先生是,單元格數量正在改變,因爲有條目被添加,因此,如果說「亞當」目前在網格中,並保存一個條目說「AAM」,如果當前單元格的數字od'亞當'是3,那麼如果添加'aam',它將是4。所以細胞的數量並不重要。並記錄單元格值不可編輯,因此無法使用「CellValueChanged」 – OneLazy

0

您需要做的是獲取GridViewRow中列的值。你在正確的軌道上。在RowDataBound中,找到您之後的列。然後檢查它的值。

這裏是一個例子。使用FindControl()獲取當前行的指定列中的控件。如果該列中的控件是Label,請檢查標籤的文本以查看它是否是您想要隱藏的值。如果是這樣,請隱藏該行。

protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     Label lbl = e.Row.FindControl("MyLabel"); 
     if (lbl.Text == "MyValue") 
     { 
      e.Row.Visible = false; 
     } 
    } 
}