【问题标题】:Gridview row unique color based on SQL variable基于 SQL 变量的 Gridview 行唯一颜色
【发布时间】:2013-01-18 02:31:52
【问题描述】:

对不起,标题满嘴,但我想做的是非常基本的。在带有消息的收件箱中,每条消息的 DB 都有一个hasBeenRead 位。单击并“读取”此消息后,该位设置为真,否则为假。

我想知道如何从本质上将已读取的所有背景颜色设置为默认值以外的其他颜色?我有一些想法,比如遍历每一行并检查那一点......但是假设你有一个足够大的网格视图和足够的行,哇,这听起来效率很低。我还想我可以将行应该是的颜色存储在数据库中......但是我不确定这将如何转化为实际更改行的颜色。

【问题讨论】:

标签: c# asp.net gridview colors row


【解决方案1】:

当我写下我的第一个答案时,我的脑海中出现了 listView。

但是你可以使用 rowDataBound 事件并在后面的代码中设置行的颜色。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
         DataKeyNames="xyz" onrowdatabound="GridView1_RowDataBound">
...
</asp:GridView>


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{               
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
         e.Row.BackColor = Color.FromName("#E56E94");     
    }
}

【讨论】:

  • 对不起,我最近没有太多时间来检查这个答案。这么快的问题。 DataKeyNames 有什么用?后面的代码好像没有用到?另外,我想我想做的是将 hasBeenRead 标志添加到列中并将其隐藏,然后执行 if 语句,例如 if (e.Row.RowType.Cell[5] == false){change color;} ?那行得通吗?我不确定您的 if 语句正在做什么/检查。
  • DataKeyNames 只是您绑定到网格的数据的主键。因此,在您的情况下,它可能是“Id”或类似的东西。看你的代码sn-p,好像不错。如果在上面示例中的第一个中,您只需要坚持下去。如果您还需要什么,请告诉我:-)
  • 这么快的问题。我尝试在您的 if 语句 if (e.Row.Cells[5].Equals("false")) { do something} 之后添加代码。问题在于我可以通过调试得知,GridView1_RowDataBound 仅在您加载页面时才会被命中。加载页面并单击每一行后,该方法将不再被点击。任何建议将不胜感激。谢谢!
  • 啊,你想在点击一行时改变颜色?你也需要在这里做这样的事情:stackoverflow.com/questions/7090086/…
  • 哦不抱歉哈哈我现在对自己想要什么感到困惑。我知道单击该行时如何更改颜色我不知道我在上一个语句中的想法。因此,gridview 包含给用户的私人消息列表。我想在加载时根据它是否已被读取来更改颜色,这是存储在消息数据库中的列。我想如果我将它作为隐藏列放入gridview,我可以以某种方式检查它并根据值更改颜色?
猜你喜欢
  • 1970-01-01
  • 2015-10-18
  • 2014-12-05
  • 2012-11-02
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
相关资源
最近更新 更多