我爲我公司開發了一個培訓矩陣,向所有員工展示了公司提供的所有培訓課程。現在,我必須以易於管理員編輯和更新的方式進行開發。我做了一切正確的事,除了一件事是給每組課程一個特定的顏色(因爲我有3種類型的課程)。僅供參考,我有兩個SqlDataSources發展此矩陣:如何訪問下面的SqlDataSource?
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>
現在,因爲我使用HTMLTABLE,我需要訪問SqlDataSource1做一些邏輯,如: 我f 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;
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);
}
}
我試圖通過執行以下操作做到這一點,但我失敗了:
//for adding the headers to the table
foreach (DataColumn column in dv.Table.Columns)
{
HtmlTableCell headerCell = new HtmlTableCell("th");
headerCell.InnerText = column.Caption;
if (group[0].Equals(1)){
headerCell.BgColor = "Blue";
else if (group[0].Equals(2))
headerCell.BgColor = "Yellow";
header.Cells.Add(headerCell);
}
table.Rows.Add(header);
編輯:
順便說一句,是否可以確定哪些單元格將用藍色着色?例如,在組#1,其具有8個療程,我想着色從第四單元開始直到最後一個。然而,組2有10門課程,我也希望着色從第四個單元開始到最後一個。 你能幫我解決這個問題嗎?
非常感謝。我非常感謝你的幫助。順便說一下,是否可以確定哪些單元格將用藍色着色?例如,在有8門課程的小組#1中,我想讓着色從第四個單元開始到最後一個。然而,組2有10門課程,我也希望着色從第四個單元開始到最後一個。你能幫我解決這個問題嗎? – 2012-02-15 07:12:46
@AliAhmed可以使用[BgColor](http://msdn.microsoft.com/en-US/library/system.web.ui.htmlcontrols.htmltablecell.bgcolor%28v=vs)更改表格字段的顏色。 80%29.aspx)HtmlTableCell類的屬性。您可以在您通過DataView循環的代碼片段中的「if」運算符的「else」塊中分配它。在你的thrird代碼片段附近添加單元格附近的註釋'/ /創建HtmlTable的地方。 – 2012-02-15 07:55:26
謝謝,但我說的是標題單元格而不是行單元格。你能否給我提供代碼片段? – 2012-02-15 07:59:55