我在SQL表中有一列名为Colors(Colors nchar(10) NOT NULL
)的字符串。颜色可以是红色,蓝色,绿色,黄色或橙色。在同一个表中,我有一个名为names(Names nchar(20) NOT NULL
)的列,其中包含子项的名称。我的ASP.NET应用程序中有一个网格,每个颜色(红色,蓝色,绿色,黄色或橙色)有五列,另一列有名称。我的网格中的每一行代表一个孩子,对于每个孩子,孩子最喜欢的颜色应该用布尔值标记。有一个简单的方法吗?
不寻找超级特定代码 - 只是通过每个孩子名字的for循环框架。谢谢!
答案 0 :(得分:1)
假设通过“标记为布尔值”,您希望在网格中使用复选框控件来显示每个颜色列的真/假值,您可以尝试这样的事情:
示例GridView控件(为简洁起见,我不包括数据绑定代码):
function go() {
var beer = 99;
while (beer > 0) {
var verse = [
beer + " bottles of beer on the wall,",
beer + " bottles of beer!",
"Take one down, pass it around", (beer - 1) + " bottles of beer on the wall!"
].join("\n");
document.getElementById("show").innerHTML = verse;
beer--;
}
}
在代码隐藏类中:
<asp:GridView ID="childGrid" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Name" />
<asp:TemplateField HeaderText="Red">
<ItemTemplate>
<asp:CheckBox ID="Red" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Green">
<ItemTemplate>
<asp:CheckBox ID="Green" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Yellow">
<ItemTemplate>
<asp:CheckBox ID="Yellow" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Orange">
<ItemTemplate>
<asp:CheckBox ID="Orange" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
重要:在这个例子中,我使用的是一个简单的约定,即假设GridView中每个CheckBox控件的ID与“Children”的Color列中的值匹配“表格(区分大小写的匹配)。显然,您可以使用特定的外壳(例如,较低的,较高的或正确的)修改ID命名方案,并修改我提供的代码隐藏代码以考虑特定的外壳。
答案 1 :(得分:0)
一种方法是实现&#39;颜色为结果集中的布尔列。 警告:如果您的颜色列表变大,这可能无法很好地扩展 - 但这个概念很常见。
鉴于
CREATE TABLE dbo.Children ( ChildID INT Identity,
Name NVARCHAR(20)
, Color NCHAR(10)
)
以及一些示例数据:
INSERT INTO dbo.Children (Name, Color) Values ('Ted', 'Red')
INSERT INTO dbo.Children (Name, Color) Values ('Alice', 'Green')
模式如下所示:
SELECT c.ChildID
, c.Name
, CAST( CASE WHEN c.Color = 'Red' THEN 1 ELSE 0 END as BIT) as LovesRed
, CAST( CASE WHEN c.Color = 'Green' THEN 1 ELSE 0 END as BIT) as LovesGreen
-- ... one for each color
FROM dbo.Children c
我也意识到我将你的列名更改为单数(颜色而不是颜色)...因为这遵循了一个相当根深蒂固的标准。
然后,您可以非常直接的方式将LovesGreen
和LovesRed
(等)绑定到您的网格。
答案 2 :(得分:0)
您可以这样做:
protected void dgvSearch_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == System.Web.UI.WebControls.DataControlRowType.DataRow)
{
string myVal = e.Row.Cells[1].Text;
if (myVal == "Red")
{
e.Row.Cells[1].Text = "True";
}
}
}
您必须遍历每行上的单元格,但上面的示例显示了如何选择单元格并设置文本。希望这与您所寻找的一致。