2017-09-11 2 views
0

データベースから「完了」というタイトルの列の値に基づいてセルのテキストの色を変更したいが、グリッドビューにその列を含めないようにするASPグリッドビューがあります。データベースには完了していないとして、フォームがマークされている場合、フォーム#テキストの列のセルが赤になります グリッドビューに表示されていない列の値に基づいて、グリッドビューから列セルのテキストを変更できますか?

部門

|フォーム#| ユーザー:

私はGridViewの中に表示された3つの列をしたいです。

私はこの私が、それは次のようになりますので、GridViewの内に表示したくない列追加することによって、今取り組んでいる: ユーザー|フォーム#|部門|私は、クエリを持っているのSqlDataSourceで

を完了:

を分離コードで
Select User, Form, Dept, 
CASE Finished 
WHEN 'True' THEN (' ') 
WHEN 'False' THE ('!') 
END AS Finished FROM Test1 

  if (Completed == "True") 
      { 
       cell3.ForeColor = Color.Red; 
      } 

これは動作しますが、私はGridViewの中に表示さ完成し題したコラムを望んでいません。これは可能ですか?

答えて

1

自動生成された列をtrueに設定する代わりに、GridView TemplateFieldsを使用します。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound"> 
    <Columns> 
     <asp:TemplateField HeaderText="User"> 
      <ItemTemplate> 
       <%# Eval("User") %> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Form"> 
      <ItemTemplate> 
       <%# Eval("Form") %> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Dept"> 
      <ItemTemplate> 
       <%# Eval("Dept") %> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

更新

OnRowDataBoundイベントを使用して、GridViewのにバインドされたデータの値をチェックします。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    //check if the row is a datarow 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //cast the dataitem back to a row 
     DataRowView row = e.Row.DataItem as DataRowView; 

     //check the value and set the backcolor 
     if (Convert.ToBoolean(row["Finished"]) == true) 
     { 
      e.Row.BackColor = Color.Red; 
     } 
    } 
} 
+0

私はちょうどそれを試してみましたが、 –

+0

は私の答えを更新しました...私はそれがGridViewのではありませんので、分離コードから値を取得する方法を見つけ出すことができない問題が発生したようです。 – VDWWD

+0

ああ、それをして、私は追加する必要があった:if(Convert.ToBoolean(row ["Finished"])== true)。ヒントをありがとう! –

関連する問題