2014-07-09 105 views
0

我可以在GridView中編輯單行。GridView和RowDataBound事件

但是,當在MySQL數據庫中的字段「卡」的值不爲空我需要停止編輯GridView控件這個單一行(並通過在閉合狀態下的行)。

我試過這個解決方案,但在GridView的我在「封閉狀態」的GridView的所有行即使領域「卡」的值爲null,爲什麼呢?

條件被插入RowDataBound事件,它是正確的?

我的代碼如下。

我將不勝感激任何幫助,你可以給我解決這個問題。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     var obj = ((DataRowView)e.Row.DataItem)["card"]; 
     ImageButton edit = (ImageButton)e.Row.FindControl("imgbtnEdit"); 

     if (obj != null) 
     { 
      edit.Enabled = false; 
      edit.ToolTip = "Closed state"; 
     } 
    } 


    if (e.Row.RowType == DataControlRowType.Pager) 
    { 
     DropDownList ddl = (DropDownList)(e.Row.FindControl("ddlpages")); 
     Label lblPageCount = (Label)e.Row.FindControl("lblPageCount"); 

     if (lblPageCount != null) 
      lblPageCount.Text = GridView1.PageCount.ToString(); 

     for (int i = 1; i <= GridView1.PageCount; i++) 
     { 
      ddl.Items.Add(i.ToString()); 
     } 

     ddl.SelectedIndex = GridView1.PageIndex; 

     if (GridView1.PageIndex == 0) 
     { 
      ((ImageButton)e.Row.FindControl("ImageButton1")).Visible = false; 
      ((ImageButton)e.Row.FindControl("ImageButton2")).Visible = false; 
     } 

     if (GridView1.PageIndex + 1 == GridView1.PageCount) 
     { 
      ((ImageButton)e.Row.FindControl("ImageButton3")).Visible = false; 
      ((ImageButton)e.Row.FindControl("ImageButton4")).Visible = false; 
     } 
    } 
} 

回答

1

這是因爲DBNull.Valuenull是兩回事。

var obj = ((DataRowView)e.Row.DataItem)["card"]; 
if (!DBNull.Value.Equals(obj)) 
{ 
    edit.Enabled = false; 
    edit.ToolTip = "Closed state"; 
} 

這將檢查「card」值是否爲空數據庫值,而不是空對象。

相關問題