私は会社内で提供されるすべてのトレーニングコースを持つすべての従業員を表示する私の会社のトレーニングマトリックスを開発しました。今、私は管理者が編集して更新するのが簡単な方法でそれを開発しなければなりません。 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);