8

多くの TemplateField を含む Gridview があります。HTMLソースのすべてをデータベースに保存されている色と等しくし
たい コードを試します下にありますが、機能していません。色のタグが内側にありますが、ブラウザには表示されません<td>
<span><td>

<asp:TemplateField HeaderText="BackGround Color">
     <ItemTemplate>
           <asp:Label  ID="lblBackColor" runat="server" 
                   BackColor='<%# ConvertFromHexToColor( Eval("BackColor").ToString()) %>'>
            </asp:Label>
           <itemstyle width="20%" horizontalalign="Center" />
     </ItemTemplate>    
</asp:TemplateField>

C# コードの動作

public  Color ConvertFromHexToColor(string hex)
{
    string colorcode = hex;
    int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber);
    Color clr = Color.FromArgb(argb);
    return clr;
}

そして、これは私のブラウザのソースhtmlとcssコードです

            <td>
                <span id="BodyZone__ThemesGrid_lblForeColor_0"  style="background-color: #FFFFFF;"></span>
                <itemstyle width="20%" horizontalalign="Center">
                    </itemstyle>
            </td>

CSS

table.activity_datatable td {
padding: 8px 15px;
color: #6c6c6c;
vertical-align: middle;
-webkit-transition: all 0.2s;
}
4

3 に答える 3

5

ブール値で true かどうかを確認したい場合は、緑色でなければ赤色が有効になります。次に、Eval 関数に従ってそれぞれの色でテキストを表示します。ここで GetStatus は、テキストを UI にバインドするコード ビハインドで作成する必要があるメソッドです。それ以外の場合は、通常どおり Eval または Bind 関数でバインドできます。

 ForeColor='<%# (bool)Eval("UserType")==true?System.Drawing.Color.Green:System.Drawing.Color.Red %>'
                                Text='<%# GetStatus((bool)Eval("UserType")) %>'>
于 2015-01-27T09:17:13.640 に答える
4

ラベル内にテキストを配置する必要があります (これはスパンにレンダリングされます)

<asp:TemplateField HeaderText="BackGround Color">
  <ItemTemplate>
    <asp:Label  ID="lblBackColor" runat="server" BackColor='<%# ConvertFromHexToColor( Eval("BackColor").ToString()) %>'>PUT_TEXT_HERE</asp:Label>
    <itemstyle width="20%" horizontalalign="Center" />
  </ItemTemplate>
</asp:TemplateField>

Label ではなく Panel (div にレンダリング) を使用することもできます。div または span 内に何かを入れることを忘れないでください。

于 2013-02-11T07:14:35.973 に答える