【问题标题】:Can a style be added to a System.Data.DataRow可以将样式添加到 System.Data.DataRow
【发布时间】:2016-01-07 01:54:22
【问题描述】:

我正在遍历每一列并检索行列值。现在基于某些条件,我想为该特定行添加颜色。有可能吗

foreach (var columnName in ColumnNames)
{
 if(something) //true  , I want ot add colour and I tried

    dr[columnName] = "<span style='background-color:yellow;'>" + row[columnName] + "</span>";
}

但它不显示为文本但不应用样式。如何为其添加颜色

前端

<asp:GridView ID="gv" runat="server">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkAll" AutoPostBack="true" runat="server"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkItem" runat="server" AutoPostBack="true" OnCheckedChanged="chkItem_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

CS

foreach(GridViewRow gridRow in myGridview.Rows)
{
    for(int i = 0; i < myGridview.Columns.Count, i++)
    {
        if(gridRow.Cells[i].Text.Contains('*'))
        {
           //Do your thing 
           gridRow.Cells[i].Text=gridRow.Cells[i].Text.Replace(@"*", "");
           gridRow.Cells[i].Style.Font = 
            new Font("Ariel", 8, FontStyle.Underline);
        }
    }
}

【问题讨论】:

  • DataTable 是 C# 内存对象,而不是 UI 组件。显然你不能。您是否将此 DataTable 绑定到数据绑定控件或其他东西?
  • 我将它绑定到一个gridview
  • 所以在gridview中应用样式,如果你想基于某些条件这样做,在RowDataBound事件中进行。
  • 样式应该在 GridView 而不是 DataTable 对象中完成。像这样的东西:&lt;HeaderStyle BackColor="#eeeeee" /&gt;
  • 实际上我正在将数据表绑定到gridview。现在我必须添加列而不是编写额外的代码我想知道有什么更简单的吗?

标签: c# asp.net datatable datarow


【解决方案1】:

您可以像这样使用RowDataBound 事件:-

在您的网格视图中附加事件:-

<asp:GridView ID="gv" runat="server" OnRowDataBound="gv_RowDataBound"></asp:GridView>

在后面的代码中:-

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[2].Text == "Youvalue") //condition here
        {
             e.Row.BackColor = System.Drawing.Color.Yellow;
        }
     }
}

这里需要相应地指定从0开始的单元格索引。

【讨论】:

  • 我添加了我的标记,由于某种原因它只显示一列,我从 DataTable 绑定的列没有出现@Rahul Singh
  • @DheerajPatnaik - 显示一列意味着什么?现在gridview没有绑定?
  • 我添加了 cs 文件,在我的循环中它显示列为计数 1,即复选框
  • @DheerajPatnaik - 为什么添加了foreach 循环?你在哪里叫它? RowDataBound 事件无论如何都会对每一行进行迭代,您只需在 .Cells[2] 中指定列号即可,不需要循环。
  • 谢谢你为我做的@Rahul
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-13
  • 2021-06-16
  • 2013-02-26
  • 2017-12-25
相关资源
最近更新 更多