我有SQL表dbo.Clicks看起来像这样:分别填充并绘制每个gridview单元格?
ColNum Color RowNum Message
1 Gold 1 Text1
1 Black 2 Text2
2 Red 2 MoreText
2 Blue 3 TextX
我的存储过程返回这样这个相同的数据。这是基本datatable
:
Col1 Col2
-----------------------
Gold (null)
Black Red
(null) Blue
我填写每个单元RowDataBound
:
protected void GridViewClicks_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (TableCell cell in e.Row.Cells)
{
cell.BackColor = ConvertFromHexToColor(cell.Text);
}
}
}
此代码的工作,因为它填补了细胞与其对应的背景色。
现在的问题是,我还需要在每个单元格中显示我的sql表[dbo.Clicks]的内容。这就是我卡住的地方。
另一种方法是,如果我使用示例数据,每个数据表单元都包含颜色和文本,就像这样。然后我解析它:
Col1 Col2
Gold/Text1 (null)
Black/Text2 Red/MoreText
(null) Blue/TextX
但我在想,必须有一个更优雅的方式来做到这一点。对我而言,这个解决方案非常难看。
我的GridView看起来是这样的:
<asp:GridView ID="GridViewClicks" runat="server" ShowHeader="False" onrowdatabound="GridViewClicks_RowDataBound">
</asp:GridView>
感谢。
感谢您的回复。我注意到你正在为“细胞”设置一个固定值。我不知道数据表有多少列。你的答案仍然有效吗? – rbhat
这取决于从数据源接收列和颜色的方式。如果它是'文本,颜色,文本,颜色'等,你可以在rowdatabound事件循环,每个单元格的颜色-1' – VDWWD
我已经更新了我的答案一个简单的例子。 – VDWWD