2012-03-12 50 views
6

我有一個位值(黑色)我想在gridview中顯示它的狀態,就好像它的真,行顯示「是」,否則行顯示「否」 ,這是我的代碼,但結果是不正確的辯論,因爲我的代碼顯示所有行「是」如果一個值是真的,我想顯示每行狀態Gridview的RowDataBound事件中基於行數據的條件輸出

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      DataTable dt = GetData(); 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       Boolean bitBlack = Convert.ToBoolean(dt.Rows[i]["Black"]); 
       if (bitBlack) 
       { 
        e.Row.Cells[7].Text = ("Yes"); 
       } 
       else 
       { 
        e.Row.Cells[7].Text = ("No"); 
       } 
      } 
     } 
    } 
+0

GetData()返回的方法是什麼? – Seany84 2012-03-12 12:25:37

回答

9

你總是可以使用行DataItem得到根本DataSource

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRow row = ((DataRowView)e.Row.DataItem).Row; 
     bool isBlack = row.Field<bool>("Black"); 
     e.Row.Cells[7].Text = isBlack ? "Yes" : "No"; 
    } 
} 
+1

確切的解決方案,它的工作,謝謝蒂姆 – Shehab 2012-03-12 13:47:50

+0

適用於我,但在略有不同的情況下 – wubblyjuggly 2015-07-31 10:16:41

2

你需要通過一個DataTable迭代dt在每個RowDatabound?

如果你不需要這些,你可以嘗試:

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 

       Boolean bitBlack = Convert.ToBoolean(e.Row.Cells[7].Text); 
       if (bitBlack) 
       { 
        e.Row.Cells[7].Text = "Yes"; 
       } 
       else 
       { 
        e.Row.Cells[7].Text = "No"; 
       } 

     } 
    } 
+0

Thanx Seany,但我試過你的解決方案,並得到了錯誤「無法將類型爲'System.Web.UI.WebControls.DataControlFieldCell'的對象鍵入'System.IConvertible'」 – Shehab 2012-03-12 12:42:44

+0

忘記添加.Text屬性,請參閱添加了.Text屬性的我的代碼的修訂版本。 – Seany84 2012-03-12 13:16:11

2

我不知道你的數據源,但如果你可以評估它,可以這樣做:

<asp:TemplateField HeaderText="Status"> 
      <ItemStyle CssClass="list" /> 
      <ItemTemplate> 
        <%# GetBit(Eval("BlackBit"))%> 
      </ItemTemplate> 
</asp:TemplateField> 

An d code-behind:

private string GetBit(object objBit) 
{ 
    if (Convert.ToInt32(objBit) == 1) 
    { 
     return "Yes"; 
    } 
    return "No"; 
} 
+0

蒂姆的答案工作完美,thanx對你們所有人的幫助 – Shehab 2012-03-12 13:48:42

相關問題