博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GridView中RowDataBound事件 获取列值的方法 .
阅读量:4331 次
发布时间:2019-06-06

本文共 2035 字,大约阅读时间需要 6 分钟。

GridView是ASP.NET中功能强大的数据显示控件,它的RowDataBound事件为我们提供了方便的控制行、列数据的途径。要获取当前行的某个数据列,有如下几种方法:

 

1. Cells[x].Txt。

    从列单元格的文本值获取。这种方法简单高率,最为常用,但是功能单纯。此法存在几个缺点:
    (1)无法获取到设置了隐藏属性的数据列的值,所取到的值为“”(空)。
    (2)只能获取在HTML中定义过的数据列,无法查询数据源中的当前数据行的所有字段列。一般情况下,通过HTML设置GridView的字段列的数量往往小于数据源的实际字段数量,这是因为从业务逻辑的角度看,并不是所有的字段都是要显示在页面上的。当需要使用没有被显示的字段时,此法就不能直接满足需求了。

 

 

2. e.Row.Cells[x].FindControl("YourcontrolName")。

    这是在单元格内查找某个服务器控件,从而获得其数据值。这种方式可以操作单元格内的服务器控件。此法一般用于处理模板列中的数据或控件。

3. (DataRowView)e.Row.DataItem).Row.ItemArray[x].ToString()。

    此法的核心是e.Row.DataItem,它是GridView的行数据集,为Object类型,将其转化为DataRowView类型后,可以获得更多的操作方法。此数据集表示数据源当前行的全部字段列,ItemArray[x]是当前行全部字段列的数组对象,可以通过索引x获得任意字段值。此法的强悍之处是可以对数据源的全部字段查询。

4. DataBinder.Eval(e.Row.DataItem, "YourDataFieldName").ToString()。

    此法仍然基于e.Row.DataItem,其特点是更快捷的获得数据源的任意字段值,因为使用了DataBinder.Eval(),需要注意的是不要写错字段名称。

例如: 控制gridview 行中得button控件

  protected void GV_SEC_RowDataBound(object sender, GridViewRowEventArgs e)

    {
        if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex >= 0)
        {
            DataRowView dr = (DataRowView)e.Row.DataItem;
            HyperLink FileName = (HyperLink)e.Row.FindControl("FileName");
            FileName.NavigateUrl = dr["FFilePath"].ToString();
             Button bt = (Button)e.Row.FindControl("bt_pass");
            Button btno = (Button)e.Row.FindControl("bt_nopass");
            string flag = DataBinder.Eval(e.Row.DataItem, "FPass").ToString();
            if (flag == " " || flag == null)
            {
                bt.Enabled = true;
                btno.Enabled = true;

            }

            else
            {
                if (flag == "F")
                {
                    bt.Enabled = true;
                    btno.Enabled = false;
                }
                else
                {
                    bt.Enabled = false;
                    btno.Enabled = false;
                }
            }

        }

    }

软件开发网 www.mscto.com

5. 将e.Row.DataItem转化为自定义类型,实现数据类型化。

    例如:
    DSRequestTracking.TB_RequestTrackingRow rtrow=(DSRequestTracking.TB_RequestTrackingRow)((DataRowView)e.Row.DataItem).Row;
    RequestStatusDropDownList1.SelectedValue = rtrow.StatusID.ToString();
    其中DSRequestTracking是通过DSRequestTracking.xsd文件在工程中自定义的强类型DataSet, TB_RequestTrackingRow是VS自动为此强类型生成的创建数据行对象的方法。通过此法,实现了类型化数据的广泛应用。数据类型化的好处很多,显而易见的便是传一个类型数据给方法,取代一大堆参数,另外就是再也不会发生字段名拼写错误的情况。

转载于:https://www.cnblogs.com/nightly/archive/2011/11/09/2242049.html

你可能感兴趣的文章
第一次作业
查看>>
“==”运算符与equals()
查看>>
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>
ajax跨域,携带cookie
查看>>
阶段3 2.Spring_01.Spring框架简介_03.spring概述
查看>>