gridview逐行读取数据并修改该行字体

时间:2022-04-21 15:06:36
我将数据绑定到页面的gridview中以后,想通过匹配记录中某一列的值来查找到该记录,并将该记录的字体设置为粗体,该如何逐行读取gridview中的数据呢?我使用的是foreach循环,但是跟踪程序代码,发现该循环并没有执行,贴出循环代码
foreach (GridViewRow i in gvList.Rows)
                {
                      if (i.Cells[0].Text == "155")
                          i.Font.Bold = true;
                }

请路过的高手解答,我的目的是通过匹配第一列的值,将某些符合条件的记录粗体显示

16 个解决方案

#1


该回复于2011-03-01 16:44:18被版主删除

#2


在CellFormatting事件中处理

#3


foreach 没执行还要看你前面的代码,或是在哪个事件执行?
.Cells[0].Text == //这样有问题吧,我是这样判断的,可以成功运行
.Cells[0].Value ==

#4


replace来控制
gvList.Rows[0][0].cell["字体"].Resplace("<font>"+gvList.Rows[0][0].cell["字体"]+"</font>",gvList.Rows[0][0].cell["字体"]);

#5


if (i.Cells[0].Text == "155")

这句进去没有?还是说根本就没进foreach ?

#6


根本就没进foreach,这个循环我是在页面加载事件里写的,程序运行正常,就是这段代码跳过了,跟踪调试发现根本没进循环

#7


if (((Lable)i.Cells[0].Controls[0]).Text == "155")
改成这样看看

#8


引用 2 楼 bdmh 的回复:
在CellFormatting事件中处理

我的程序流程是这样的,页面加载--绑定gridview--查找匹配记录--修改本行记录字体

#9


引用 6 楼 kristinwang 的回复:
根本就没进foreach,这个循环我是在页面加载事件里写的,程序运行正常,就是这段代码跳过了,跟踪调试发现根本没进循环


你确认gvList.Rows不是空的?怎么没进去foreach?

#10


<%# Eval("").ToString()=="155"?"<font..>"+Eval("")+"</font>":Eval("")%>

#11


你写在那个事件里面

在databinds或Cells相应的事件里面

你代码都没执行,肯定是绑定的事件错了或没绑定到你写的那个方法

#12


引用 7 楼 wangoqoq 的回复:
if (((Lable)i.Cells[0].Controls[0]).Text == "155")
改成这样看看

谢谢,不过我跟踪程序的时候,发现不是这个问题,即使我if(1==1)也没用,因为根本没有进入循环

#13


引用 10 楼 wuyq11 的回复:
<%# Eval("").ToString()=="155"?"<font..>"+Eval("")+"</font>":Eval("")%>

我设置的==155只是个测试,我的gridview显示列都是动态绑定的,可以更改设置要显示的列,所以在前台改可能不行
我的原意是,在gridview的数据中逐行的读取,判断第一列的字段是否为某个值,如果是,则修改字体

#14


  在RowDataBound事件里面判断呢?

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.DataItemIndex == -1)
        {
            return;
        }
        if (e.Row.Cells[0].Text.Trim().ToString() == "")    
        {
              e.Row.Cells[0].Font.......
        }
    }

#15


引用 11 楼 klint_khl1 的回复:
你写在那个事件里面

在databinds或Cells相应的事件里面

你代码都没执行,肯定是绑定的事件错了或没绑定到你写的那个方法

只有这个循环代码没有执行,其他代码都正常运行,并且页面也能显示数据,不过没有粗体显示,这个循环是写在page_load事件里的

#16


引用 14 楼 hj_daxian 的回复:
  在RowDataBound事件里面判断呢?
C# code

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.DataItemIndex == -1)
        {
            return;
        ……

谢谢,你的方法是正确的,我没有想到在绑定的同时修改字体,我一直是打算绑定完数据之后再逐行查找匹配然后修改。。。。问题解决了

#1


该回复于2011-03-01 16:44:18被版主删除

#2


在CellFormatting事件中处理

#3


foreach 没执行还要看你前面的代码,或是在哪个事件执行?
.Cells[0].Text == //这样有问题吧,我是这样判断的,可以成功运行
.Cells[0].Value ==

#4


replace来控制
gvList.Rows[0][0].cell["字体"].Resplace("<font>"+gvList.Rows[0][0].cell["字体"]+"</font>",gvList.Rows[0][0].cell["字体"]);

#5


if (i.Cells[0].Text == "155")

这句进去没有?还是说根本就没进foreach ?

#6


根本就没进foreach,这个循环我是在页面加载事件里写的,程序运行正常,就是这段代码跳过了,跟踪调试发现根本没进循环

#7


if (((Lable)i.Cells[0].Controls[0]).Text == "155")
改成这样看看

#8


引用 2 楼 bdmh 的回复:
在CellFormatting事件中处理

我的程序流程是这样的,页面加载--绑定gridview--查找匹配记录--修改本行记录字体

#9


引用 6 楼 kristinwang 的回复:
根本就没进foreach,这个循环我是在页面加载事件里写的,程序运行正常,就是这段代码跳过了,跟踪调试发现根本没进循环


你确认gvList.Rows不是空的?怎么没进去foreach?

#10


<%# Eval("").ToString()=="155"?"<font..>"+Eval("")+"</font>":Eval("")%>

#11


你写在那个事件里面

在databinds或Cells相应的事件里面

你代码都没执行,肯定是绑定的事件错了或没绑定到你写的那个方法

#12


引用 7 楼 wangoqoq 的回复:
if (((Lable)i.Cells[0].Controls[0]).Text == "155")
改成这样看看

谢谢,不过我跟踪程序的时候,发现不是这个问题,即使我if(1==1)也没用,因为根本没有进入循环

#13


引用 10 楼 wuyq11 的回复:
<%# Eval("").ToString()=="155"?"<font..>"+Eval("")+"</font>":Eval("")%>

我设置的==155只是个测试,我的gridview显示列都是动态绑定的,可以更改设置要显示的列,所以在前台改可能不行
我的原意是,在gridview的数据中逐行的读取,判断第一列的字段是否为某个值,如果是,则修改字体

#14


  在RowDataBound事件里面判断呢?

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.DataItemIndex == -1)
        {
            return;
        }
        if (e.Row.Cells[0].Text.Trim().ToString() == "")    
        {
              e.Row.Cells[0].Font.......
        }
    }

#15


引用 11 楼 klint_khl1 的回复:
你写在那个事件里面

在databinds或Cells相应的事件里面

你代码都没执行,肯定是绑定的事件错了或没绑定到你写的那个方法

只有这个循环代码没有执行,其他代码都正常运行,并且页面也能显示数据,不过没有粗体显示,这个循环是写在page_load事件里的

#16


引用 14 楼 hj_daxian 的回复:
  在RowDataBound事件里面判断呢?
C# code

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.DataItemIndex == -1)
        {
            return;
        ……

谢谢,你的方法是正确的,我没有想到在绑定的同时修改字体,我一直是打算绑定完数据之后再逐行查找匹配然后修改。。。。问题解决了