Asp.net 根据行中某列的值更改行的颜色
我有一个sqldatasource,它从我的服务器加载数据并将其放入数据网格 我有一个名为clnumber的列,它有数字1,2,3 我想要的是,根据datarow列中的数字,每一行都有不同的颜色 这是我使用的代码 根据数字如何计算? 第一排白色,第二排灰色Asp.net 根据行中某列的值更改行的颜色,asp.net,jquery,vb.net,gridview,Asp.net,Jquery,Vb.net,Gridview,我有一个sqldatasource,它从我的服务器加载数据并将其放入数据网格 我有一个名为clnumber的列,它有数字1,2,3 我想要的是,根据datarow列中的数字,每一行都有不同的颜色 这是我使用的代码 根据数字如何计算? 第一排白色,第二排灰色 if(rownumber%2 == 0) //white else //grey 或者反过来说。基于数字如何? 第一排白色,第二排灰色 if(rownumber%2 == 0) //white else //grey 或者反过来说。如果
if(rownumber%2 == 0) //white
else //grey
或者反过来说。基于数字如何?
第一排白色,第二排灰色
if(rownumber%2 == 0) //white
else //grey
或者反过来说。如果指示应该使用哪种颜色的数字实际上是在HTML输出中生成的,为什么不使用javascript?如果指示应该使用哪种颜色的数字实际上是在HTML输出中生成的,为什么不使用javascript?您可以使用类似的方法:
/// <summary>
/// Updates the row fore colour to show the line type
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">args</param>
protected void gvLineValues_RowDataBound( object sender, GridViewRowEventArgs e )
{
try
{
//Format the row
this.FormatRow( e );
}
catch ( Exception ex )
{
ErrorLogging.LogError( ex );
}
}
/// <summary>
/// Formats a gridview row
/// </summary>
/// <param name="e">Gridview event args</param>
private void FormatRow( GridViewRowEventArgs e )
{
try
{
//Change the forecolor of the row
if ( e.Row.RowType == DataControlRowType.DataRow )
{
OrderLine oOrderLine = e.Row.DataItem as OrderLine;
if ( oOrderLine != null )
{
e.Row.ForeColor = oOrderLine.ForeColour;
//Check the line is over budget
if ( oOrderLine.OverBudget )
{
e.Row.BackColor = ColourManager.OverBudgetItemBackColour;
e.Row.ToolTip = String.Format( "Item over {0} and awaiting your approval", GlobalizationManager.Budget );
}
else
{
e.Row.BackColor = ColourManager.WithinBudgetItemBackColour;
e.Row.ToolTip = "Item awaiting your approval";
}
}
}
//Change the back colour of the row if its a deleted row
if ( oOrderLine.Deleted )
{
e.Row.Font.Strikeout = true;
e.Row.ToolTip = "This line has been deleted";
}
}
}
}
catch ( Exception )
{
throw;
}
}
您可以使用类似的方法:
/// <summary>
/// Updates the row fore colour to show the line type
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">args</param>
protected void gvLineValues_RowDataBound( object sender, GridViewRowEventArgs e )
{
try
{
//Format the row
this.FormatRow( e );
}
catch ( Exception ex )
{
ErrorLogging.LogError( ex );
}
}
/// <summary>
/// Formats a gridview row
/// </summary>
/// <param name="e">Gridview event args</param>
private void FormatRow( GridViewRowEventArgs e )
{
try
{
//Change the forecolor of the row
if ( e.Row.RowType == DataControlRowType.DataRow )
{
OrderLine oOrderLine = e.Row.DataItem as OrderLine;
if ( oOrderLine != null )
{
e.Row.ForeColor = oOrderLine.ForeColour;
//Check the line is over budget
if ( oOrderLine.OverBudget )
{
e.Row.BackColor = ColourManager.OverBudgetItemBackColour;
e.Row.ToolTip = String.Format( "Item over {0} and awaiting your approval", GlobalizationManager.Budget );
}
else
{
e.Row.BackColor = ColourManager.WithinBudgetItemBackColour;
e.Row.ToolTip = "Item awaiting your approval";
}
}
}
//Change the back colour of the row if its a deleted row
if ( oOrderLine.Deleted )
{
e.Row.Font.Strikeout = true;
e.Row.ToolTip = "This line has been deleted";
}
}
}
}
catch ( Exception )
{
throw;
}
}
假设您为gridview提供了一个名为“myGridView”的css类,您可以执行以下操作:
$(document).ready(function () {
$('.myGridView tr').each(function () {
var number = $(this).children('td:eq(1)').text();
if (number == '1') {
$(this).children('td').css('background', 'red');
}
})
});
其中'td:eq1'指一行中的第二个单元格。当然,这取决于行中哪个单元格包含这个幻数
我确信这不是jQuery最优雅的用法,但您可以根据自己的意愿重构它如果您已经为gridview提供了一个名为“myGridView”的css类,您可以执行以下操作:
$(document).ready(function () {
$('.myGridView tr').each(function () {
var number = $(this).children('td:eq(1)').text();
if (number == '1') {
$(this).children('td').css('background', 'red');
}
})
});
其中'td:eq1'指一行中的第二个单元格。当然,这取决于行中哪个单元格包含这个幻数
我敢肯定这不是jQuery最优雅的用法,但您可以根据自己的意愿重构它,这将自动为网格中的每一行执行此操作?将其放入GridView_RowDataBound事件中,或者如果您的GridView具有分页功能,则它将仅应用于代码运行时出现的任何行。是的。任何一个数字被2等分都是白色的,其他的都是灰色的。嗯,你能调整一下这个方法吗,例如,如果我想要字母A,B,C的任何一行。我需要这个来做很多事情。你的意思是?你打算用“A”、“B”和“C”来代替行号,并对这些行使用不同的颜色?在这种情况下,我只使用静态字典或其他东西。这将自动为网格中的每一行执行此操作?将其放入GridView_RowDataBound事件中,或者如果GridView具有分页功能,则它将仅应用于代码运行时存在的任何行。是。任何一个数字被2等分都是白色的,其他的都是灰色的。嗯,你能调整一下这个方法吗,例如,如果我想要字母A,B,C的任何一行。我需要这个来做很多事情。你的意思是?你打算用“A”、“B”和“C”来代替行号,并对这些行使用不同的颜色?在这种情况下,我只会使用静态字典或其他东西。这是很多人在网上说的,但我不熟悉javascript,有人说甚至jquery也是可能的,我会使用jquery。使用脚本标记在页面头部引用jQuery,然后简单地迭代每一行,检查每一行以及该行中包含该数字的特定单元格,并编写一个小函数,使用CSS设置行的背景颜色。我很抱歉,但这是一种比在数据网格的事件处理程序上乱搞简单得多的方法,因为这纯粹是一个布局/CSS问题。我尝试使用我将在上面发布的jquery代码,但它不起作用。这是许多人在网上说的,但我不熟悉javascript,有人说甚至jquery也是可能的,我会使用jQuery。使用脚本标记在页面头部引用jQuery,然后简单地迭代每一行,检查每一行以及该行中包含该数字的特定单元格,并编写一个小函数,使用CSS设置行的背景颜色。很抱歉,这是一种比在数据网格中处理事件处理程序简单得多的方法,可以解决一些纯粹的布局/CSS问题。我尝试过使用jquery代码,我将在上面发布,但它不起作用。感谢您的帮助,这可能就是我使用的方法,除非我能用JavaScriptThank做这件事谢谢你的帮助这可能就是我使用的方法除非我能用JavaScript做这件事jQuery片段的一个突出问题是“Gridview1”实际上没有引用任何东西。现在,“Gridview1”或“.Gridview1”可能真的可以工作了。请参阅下面我的新文章,其中介绍了解决此问题的jQuery解决方案。jQuery片段的一个突出问题是“Gridview1”实际上没有引用任何内容。现在,“Gridview1”或“.Gridview1”可能真的可以工作了。请参阅下面我的新文章,其中介绍了此问题的jQuery解决方案。出于某种原因,它不起作用。gridview1如果我的gridview名称为gridview1,并且如果我已经有了样式表,它是否会有所不同。如果您已经有了样式表,它可能会有所不同,虽然这不太可能,因为我在这里发布的内容将通过单元格标记的style属性呈现内联css,该属性应为prec
edence在您的样式表上。还要注意,我假设我的示例中的gridview有一个名为“myGridView”的css类。如果您试图使用网格视图的ID,我怀疑它不会工作,因为ASP.NET将在HTML输出中呈现不同的ID。给网格视图一个CSS类名可以克服这个问题。它工作得很好,这要感谢唯一的问题是当我回发或更新面板时,网格在其中会恢复正常:/出于某种原因,它不工作。gridview1如果我的gridview名称是gridview1,并且如果我已经有了样式表,它是否会有所不同。如果你有一个样式表已经存在,它可能会有所不同,尽管这不太可能,因为我在这里发布的内容将通过单元格标记的style属性呈现内联css,该属性应该优先于您的样式表。还要注意,我假设我的示例中的gridview有一个名为“myGridView”的css类。如果您试图使用网格视图的ID,我怀疑它不会工作,因为ASP.NET将在HTML输出中呈现不同的ID。给网格视图一个CSS类名可以解决这个问题。它工作得很好,这要感谢唯一的问题是当我回发或更新面板时,网格在其中会恢复正常:/