2010-12-01 20 views
1

私は、文字列のリストを含む、すべての異なる種類のデータメンバーを持つクラスを持っています。データをGridViewにバインドするとき、文字列のリストをGridView内の別の列に分けたいと考えています。これらの文字列はフラグに似ていますが、最大3つのフラグがあります。フラグは適用されない場合は空でも、フラグが1つまたは2つしかない場合もあります。どのようにこれらのフラグを別のGridView列に分けることができますか? OnRowDataBoundイベントでそれを行う必要がありますか?リスト内のリストをGridViewにバインドする

現在、私のaspxコードはこのように見えます。フラグが立っているかどうかに基づいてImageコントロールのImageUrlを変更できるようにしたい。

<asp:TemplateField HeaderText="Tax" SortExpression="Tax"> 
    <ItemTemplate> 
     <asp:Image ID="imgTax" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 

    <asp:TemplateField HeaderText="Compliance" SortExpression="Compliance"> 
    <ItemTemplate> 
     <asp:Image ID="imgCompliance" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 

    <asp:TemplateField HeaderText="Accounting" SortExpression="Accounting"> 
    <ItemTemplate> 
     <asp:Image ID="imgAccounting" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 

ありがとう!

+0

、あなたはプログラムでフラグの有無に基づいて、これらの画像を表示/非表示する必要がありますか? – jwiscarson

答えて

0

データを変更してこれらの文字列をブール値にする方法はありますか?このように文字列を使用すると、コードの匂いとして私を襲う。個人的には、これらの文字列を、グリッドのデータソースとして使用しているクラスのブール値のプロパティに変換し、データベースに戻って行単位でこれらのプロパティを選択するのではなく、行ベース。

は関係なく、その、はい、あなたはこのようにRowDataBoundイベントを使用することができますので、

yourGrid_RowDataBound(object sender, EventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     YourClass currentClass = (YourClass) e.Row.DataItem; 

     for (int i = 0; i < currentClass.stringFlags.Length; i++) 
     { 
      string currentFlag = currentClass.stringFlags[i]; 

      if (currentFlag == "Tax") 
      { 
       Image imgTax = (Image) e.Row.FindControl("imgTax"); 
       imgTax.Visbile = true; 
      } 
      else if (currentFlag == "Compliance") 
      { 
       Image imgCompliance = (Image) e.Row.FindControl("imgCompliance"); 
       imgCompliance.Visbile = true; 
      } 
      else if (currentFlag == "Accounting") 
      { 
       Image imgAccounting = (Image) e.Row.FindControl("imgAccounting"); 
       imgAccounting.Visbile = true; 
      } 
     } 
    } 
} 
+0

ありがとうございます!これは多くの助けとなりました。もともと、文字列は異なるレイヤーの列挙型ですが、何らかの理由でそのレイヤーとGUIの間で文字列に変更されています。私はそれを変えることについて私ができることを見ていきます。 – mhenry

関連する問題