0

プログレスバーの値を含む列を持つ Gridview があります。各行の進行状況を表示できましたが、ブール値 ( True/False ) を持つ別の列に基づいて進行状況バーの色を変更する方法を探しています。値が True の場合、色は緑になります。値が False の場合、色は赤になります。単一の進行状況バーの色を変更することはできましたが、行ごとに Gridview で変更することはできませんでした! ブール列はステータスで、プログレスバーの値は進行中です。

前もって感謝します!

ASPの GridView :

更新しました:

<Columns>
<asp:TemplateField>
    <ItemTemplate>
        <%# Container.DataItemIndex + 1 %>
    </ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="progress" HeaderText="Progress" SortExpression="progress" />
<asp:BoundField DataField="status" HeaderText="status" SortExpression="status" />
<asp:TemplateField>
<ItemTemplate>
   <div class="pbcontainer">
      <div class="progressbar"><span><%# Eval("progress") %>%</span></div>
      <div class="value" style="visibility:hidden; height:0; width:0;"> <%#         Eval("progress") %> </div>
      <div class="status" style="visibility:hidden; height:0; width:0;"> <%# Eval("status") %> </div>
  </div>
</ItemTemplate>
</asp:TemplateField>
</Columns>

脚本:

更新しました:

  <script>
    $(function () {

        $('.pbcontainer').each(function () {

            var val = parseInt($(".value", this).text());
            var status = $(".status", this).text();

            var progressColor = "Orange";
            var progressBackColor = "lightYellow";
            if (status == "False") {
                progressColor = "Red";
                console.log(progressColor);
            }
            else {
                progressColor = "Green";
                console.log(progressColor);
            }

            $('.progressbar', this).progressbar({ value: val });
            $('.progressbar', this).css({ 'background': progressBackColor });
            $('.progressbar > div', this).css({ 'background': progressColor });
        });
    });
 </script>

編集:コードを更新しましたが、それでも色は常に緑です! Ifステートメントが機能していないように?!

4

1 に答える 1

0

スニペットでは、非表示フィールドの値は進行状況のスパンと同じです。したがって、同じ値を使用して、カラーリングを決定します。

更新しました:

たとえば、値が true と false の 2 つの行があるとします。

<div class="progressbar"><span>70%</span></div>
<div class="progressbar"><span>20%</span></div>
<div class="status" style="visibility:hidden; height:0; width:0;">true</div>
<div class="status" style="visibility:hidden; height:0; width:0;">false</div>

これで、各項目の値を読み取り、それに応じて色を付けることができます。

   var progressColorRed = "Red";
    var progressColorGreen = "Green";
    var progressBackColor = "lightYellow";
    var progressLate = true;

 $('.progressbar').each(function(index, item) {
        var progressValue = $(".status").eq(index).text();
        console.log(progressValue);
        if(progressValue == "true")
        {
            $(item).css({ 'background': progressBackColor });
            $(item).css({ 'background': progressColorGreen });
        }
        else
        {
            $(item).css({ 'background': progressBackColor });
            $(item).css({ 'background': progressColorRed });
        }
 });

ここに同じのフィドルデモがあります

于 2013-08-08T08:38:20.263 に答える