gpt4 book ai didi

c# - 如何为 HTMLTable 中的某些特定单元格着色?

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:06 25 4
gpt4 key购买 nike

我为我的公司开发了一个培训矩阵,向所有员工展示公司提供的所有培训类(class)。现在,我必须以易于管理员编辑和更新的方式开发它。除了从第四个单元格到最后一个单元格给每组类(class)指定颜色(因为我有 3 种类型的类(class))之外,我做的一切都是正确的。仅供引用,我有两个用于开发此矩阵的 SqlDataSources:

SqlDataSource1 用于检索 GroupID:

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

SqlDataSource2 将从 SqlDataSource1 获取 GroupID 并使用它生成矩阵:

<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 来执行一些逻辑,例如:如果 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);

}
}

每组的类(class)数量不同,但着色应从第四个单元格开始到最后一个单元格。我在上面代码的以下部分做了很多尝试,但都失败了,我不知道为什么。 那么怎么做呢?

//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);

最佳答案

我会使用 ListView 控件构建 html 表来解决它。使用 ListView 控件,您可以访问 OnItemDataBound 属性,您可以使用该属性编写代码来为所需的特定行着色。

关于c# - 如何为 HTMLTable 中的某些特定单元格着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9292611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com