2012-02-15 9 views
2

私は会社内で提供されるすべてのトレーニングコースを持つすべての従業員を表示する私の会社のトレーニングマトリックスを開発しました。今、私は管理者が編集して更新するのが簡単な方法でそれを開発しなければなりません。 4つのセルから最後のセルまで、それぞれのコースのグループに特定の色を与えている(私は3つのタイプのコースがあるので)すべてを修正しました。ちなみに、私はこの行列を開発するための2つのSqlDataSourcesありますHTMLTableの特定のセルに色を付けるにはどうすればいいですか?

をSqlDataSource1は、グループIDを取得するためのものです:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
       ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
       SelectCommand="SELECT [ID] FROM [groups]"></asp:SqlDataSource> 

そしてSqlDataSource2がSqlDataSource1からグループIDを取得して行列を生成するためにそれを使用します。今

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
              ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
              SelectCommandType="StoredProcedure" SelectCommand="kbiReport" FilterExpression="[Division] like '{0}%'"> 

          <SelectParameters> 
           <asp:Parameter Name="GroupID"/> 
          </SelectParameters> 

          <FilterParameters> 
           <asp:ControlParameter ControlID="ddlDivision" Name="DivisionName" 
                 PropertyName="SelectedValue" Type="String" /> 
          </FilterParameters> 

      </asp:SqlDataSource> 

、私はHTMLテーブルを使用しておりますので、私のようないくつかのロジックを実行するためにSqlDataSource1にアクセスする必要があります。 GroupID = 1の場合は、このグループに青色などを付けます。 C#で

私のコードビハインド:

protected void Page_Load(object sender, EventArgs e) 
    { 

     DataView dv2 = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); 
     foreach (DataRowView group in dv2) 
     { 
      SqlDataSource2.SelectParameters[0].DefaultValue = group[0].ToString(); 
      //create a new HtmlTable object 
      HtmlTable table = new HtmlTable(); 

      DataView dv = (DataView)SqlDataSource2.Select(DataSourceSelectArguments.Empty); 
      int columns = dv.Table.Columns.Count; 
      int rows = dv.Count; 

      //table's formating-related properties 
      table.Border = 2; 
      table.CellPadding = 3; 
      table.CellSpacing = 3; 
      table.Width = "900px"; 

      //to get the css style 
      table.Attributes["class"] = "uGrid"; 

      //create a new HtmlTableRow and HtmlTableCell objects 
      HtmlTableRow row; 
      HtmlTableRow header = new HtmlTableRow(); 
      HtmlTableCell cell; 


      //for adding the headers to the table 
      foreach (DataColumn column in dv.Table.Columns) 
      { 
       HtmlTableCell headerCell = new HtmlTableCell("th"); 
       headerCell.InnerText = column.Caption; 

       //The following if-else statements are for checking the GroupID and give each group 
       //a specific color 
       if (group[0].ToString().Equals("1")) 
        headerCell.BgColor = "lightBlue"; 
       else if (group[0].ToString().Equals("2")) 
        headerCell.BgColor = "lightYellow"; 
       else if (group[0].ToString().Equals("3")) 
        headerCell.BgColor = "Orange"; 

       //the header cells to the header 
       header.Cells.Add(headerCell); 
      } 
      table.Rows.Add(header); 

      //loop for adding rows to the table 
      foreach (DataRowView datarow in dv) 
      { 
       row = new HtmlTableRow(); 
       //row.BgColor = "yellow"; 


       //loop for adding cells 
       for (int j = 0; j < columns; j++) 
       { 
        cell = new HtmlTableCell(); 
        if (j < 4) 
        { 
         cell.InnerText = datarow[j].ToString(); 
        } 
        else 
        { 

         CheckBox checkbox = new CheckBox(); 

         int checkBoxColumns = dv.Table.Columns.Count - 5; 
         string fieldvalue = datarow[j].ToString(); 
         string yes = fieldvalue.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries)[1]; 
         string courseid = fieldvalue.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries)[0]; 
         checkbox.ID = row.Cells[3].InnerText + "," + courseid.Trim(); 
         checkbox.Checked = yes.Equals("Yes"); 
         cell.Controls.Add(checkbox); 

        } 

        //add the cell to the current row 
        row.Cells.Add(cell); 
       } 

       //add the row to the table 
       table.Rows.Add(row); 
      } 

      //add the table to the page 
      PlaceHolder1.Controls.Add(table); 

     } 
    } 

各グループのコースの異なる数がありますが、着色は第4のセルから開始してください私は、次の手順を実行していることを行うことができるかもしれません最後のセルまで私は上記のコードの次の部分で多くの試みを行いましたが、失敗し、理由がわかりません。 これはどうやって行うのですか?

//for adding the headers to the table 
      foreach (DataColumn column in dv.Table.Columns) 
      { 
       HtmlTableCell headerCell = new HtmlTableCell("th"); 
       headerCell.InnerText = column.Caption; 

       //The following if-else statements are for checking the GroupID and give each group 
       //a specific color 
       if (group[0].ToString().Equals("1")) 
        headerCell.BgColor = "lightBlue"; 
       else if (group[0].ToString().Equals("2")) 
        headerCell.BgColor = "lightYellow"; 
       else if (group[0].ToString().Equals("3")) 
        headerCell.BgColor = "Orange"; 

       //the header cells to the header 
       header.Cells.Add(headerCell); 
      } 
      table.Rows.Add(header); 

答えて

2

これは、ListViewコントロールを使用してhtmlテーブルを作成することで解決します。 ListViewコントロールを使用すると、OnItemDataBoundプロパティにアクセスすることができます。このプロパティを使用すると、必要な特定の行に色を付けるコードを記述できます。

関連する問題