none
gridview获取指定列值的办法 RRS feed

  • 问题

  • asp.net+c#网站,用gridview获取数据库表,想对满足条件的列更改列样式。比如说一个表有姓名和地区2个列,想把地区是华北的行用红色标识出来,语法 e.Row.Cells[1].Text == "华北" 这么写可以实现。但是如果一个表中列很多,能不能按照列名去查找,比方说 e.Row.Cells["地区"].Text == "华北" 类似的格式行不行。我知道这么写肯定错,我想知道按照列名搜索的正确的写法是什么。

    本人菜鸟,希望高人能写出比较完整的代码。

    2010年5月6日 4:25

答案

  • 能不能按照列名去查找?

    你只能去找数据源的记录,gridview不支持按名称去找


    【孟子E章】
    2010年5月7日 0:41
    版主
  • 按照你的意思 是否可以认为 只要 在列出的时候 能够在华北下面出现红字就行了?

    那么 一般有很多种方式可以实现.

    可以在itemdatabound的时候 对每条数据进行处理.比如 如果对应是华北的,那么 这条数据内容我们加载一个label进去. 这个是一种办法.

    还有个办法 是在客户端进行.首先也是在itemdatabound的时候 我们把每个列动态的加上id,然后在js里通过选择器获取 华北并且可以替换class

     

    大体上如此 具体可能需要你在 想下 ,类似问题我以前这么解决过.

    2010年5月7日 1:02
  • 首先,你这两个方法均可以实现LZ想要的结果 。

    但:

    1,label在asp.net页面前端会造成css的变形,有时影响js事件响应。建议LZ在ItemDataBound时,使用<span></span>替换。

    2,动态加ID?你这个ID是自定义?还是有何规则 ?我想,这可能是LZ关心的,

    3,建议如果采用动态ID,可使用数据源带过来的ID(如:记录唯一标识,地区标识等).

    4,建议LZ采用neverlost兄的第二种方法。


    我来了~
    2010年5月7日 1:25
  • 你好,GridView只是一个显示控件,没有办法象操作DataTable一样来操作,所以操作GridView的时候的思路还是只能定位为第一列,第二列,第三列。DataTable按列的顺序进行填充。

    具体改进方法楼上的朋友提的都很好,可以参考一下。


    邹俊才
    2010年5月7日 3:42
    版主

全部回复

  • 可以在RowDataBound事件中找到。

    if(e.Row.RowType==DataControlRowType.DataRow)
    e.Row.FindControl("控件ID")

    2010年5月6日 6:10
  • 不好意思,我是编程菜鸟,看不明白这个代码的作用。

    我的目的是想用RowDataBound事件,按照表中的地区列查找属于华北的行,并用红底色标注出来。搜索的是按照地区这个列名来进行的,而不是按照列索引下标方式查找。

    2010年5月7日 0:14
  • 能不能按照列名去查找?

    你只能去找数据源的记录,gridview不支持按名称去找


    【孟子E章】
    2010年5月7日 0:41
    版主
  • 按照你的意思 是否可以认为 只要 在列出的时候 能够在华北下面出现红字就行了?

    那么 一般有很多种方式可以实现.

    可以在itemdatabound的时候 对每条数据进行处理.比如 如果对应是华北的,那么 这条数据内容我们加载一个label进去. 这个是一种办法.

    还有个办法 是在客户端进行.首先也是在itemdatabound的时候 我们把每个列动态的加上id,然后在js里通过选择器获取 华北并且可以替换class

     

    大体上如此 具体可能需要你在 想下 ,类似问题我以前这么解决过.

    2010年5月7日 1:02
  • 首先,你这两个方法均可以实现LZ想要的结果 。

    但:

    1,label在asp.net页面前端会造成css的变形,有时影响js事件响应。建议LZ在ItemDataBound时,使用<span></span>替换。

    2,动态加ID?你这个ID是自定义?还是有何规则 ?我想,这可能是LZ关心的,

    3,建议如果采用动态ID,可使用数据源带过来的ID(如:记录唯一标识,地区标识等).

    4,建议LZ采用neverlost兄的第二种方法。


    我来了~
    2010年5月7日 1:25
  • 你好,GridView只是一个显示控件,没有办法象操作DataTable一样来操作,所以操作GridView的时候的思路还是只能定位为第一列,第二列,第三列。DataTable按列的顺序进行填充。

    具体改进方法楼上的朋友提的都很好,可以参考一下。


    邹俊才
    2010年5月7日 3:42
    版主
  • 哦 知道了
    2010年5月7日 4:02
  • 可以在RowDataBound事件中利用

    ((DataRowView)e.Row.DataItem).Row["列名"]  进行处理

     

    或者可以利用DataRow如:

    DataTable dt=DataSet("SQL语句").Table[0].DefaultView;

    DataRows[] dr=dt.Select(条件);

    foreach(DataRow  row in dr)

    {

    row["列名"] // 进行处理

    }

    以上列名都是数据库字段名
    2010年7月16日 13:01