3

さて、投稿する前に可能な限りこれを調査したので、これが再投稿ではないことを願っていますが、ここに行きます...

データテーブルを作成しました。たとえば、「cartype」という列があり、「color」という列を追加しました。

さて、私がやりたいのは、ラベルを使用して、そのFORECOLORを「color」列のVALUEにすることです。

私はこれを試しました:

<asp:BoundField DataField="cartype" HeaderText="Cars"  ItemStyle-Width="130" ItemStyle-ForeColor='<% Eval("Color") %>' />

しかし、私は約エラーが発生しました

「ForeColor」プロパティの文字列表現「<%Eval( "color")%>」からSystem.drawing.color型のオブジェクトを作成できません。

テンプレートフィールドを追加してみても、同じ結果が得られました。

rowdataboundイベントを使用せず、.Cells [3]を使用しようとしていました。これは、列を追加すると、セル番号が変更され、すべてが切り替わるためです。色をデータにバインドすることで、よりきれいにできることを望んでいました。

4

3 に答える 3

2

さて、私はこれをすることになった。悲しい:(

グリッドの最後に、ASP:Hiddenテンプレートフィールドを追加しました

<asp:TemplateField>
  <ItemTemplate>
   <asp:HiddenField ID="hColor" runat="server" Value='<%# Eval("Color") %>'/>
  </ItemTemplate>
</asp:TemplateField>

次に、RowDataBoundEventでこれを行いました

Dim hid As HiddenField
hid = e.Row.FindControl("hColor")
If (hid.Value <> Nothing) Then
   e.Row.Cells(1).ForeColor = System.Drawing.ColorTranslator.FromHtml("#" + hid.Value)
End If

PS。私はC#を心から愛しています。VB.NETは好きではありません。笑 :)

于 2013-01-30T16:48:25.307 に答える
1

やってみました:

 ForeColor='<%# System.Drawing.Color.FromName(Eval("Color")) %>'

于 2013-01-30T02:07:57.727 に答える
0

エラーの理由は、ランタイムがForeColorの値が文字列ではなく色であることを期待しているためです。ランタイムは、文字列「Red」から「Red」を作成できません。

次の例を使用してコードビハインドで関数を作成し、問題を回避できます。関数は文字列の色の値を受け入れ、システムの色を返します。また、gridviewにデータを入力する前に、色の列を配列リストに格納し、その配列リストを使用してシステムの色を返すことができます。最善の方法ではありませんが、他のことは考えられません。

 ForeColor='<%# Convert.ToString(Eval("Color")) == "Blue" ? System.Drawing.Blue>
于 2013-01-30T01:50:38.017 に答える