2012-03-12 15 views
6

ビット値(黒)を持っています。グリッドビューでそのステータスをtrueに、行を「はい」に、一つの値がtrueの場合、すべての行が「はい」、私はグリッドビューの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

答えて

9

あなたがいつも根底DataSourceを取得するには、行DataItemを使用することができます。

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

+0

私のために働くが、少し異なった文脈で – wubblyjuggly

2

は、あなたがたDataTableを反復処理する必要がありますか、各行のステータスを表示したい、これが私のコードですが、結果は私のコード表示cuzを、右ではありません各RowDataboundにdt?

あなたは、これはあなたが試みることができる必要がない場合:

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

+0

.Textプロパティを追加するのを忘れました。 .Textプロパティを追加したコードの改訂版。 – Seany84

2

私はあなたのデータソースを知らないが、評価できる場合は、次のようにしてください:

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

dコードビハインド:

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

ティムの答えは、完璧に働いています。 – Shehab

関連する問題