• GridView_RowDataBound 常用方法


    1.这个就不用说,鼠标经过行颜色变化

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
          

     if (e.Row.RowType == DataControlRowType.DataRow)//判定当前的行是否属于datarow类型的行
            {
                //当鼠标放上去的时候 先保存当前行的背景颜色 并给附一颜色
                e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#7f9edb',this.style.fontWeight='';");
                //当鼠标离开的时候 将背景颜色还原的以前的颜色
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor,this.style.fontWeight='';");
            }

        }

    2.这个也很ez

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
             if (e.Row.RowType == DataControlRowType.DataRow)
            {

                switch (e.Row.Cells[1].Text.ToString())
                {
                    case "1":
                        e.Row.Cells[1].Text = "加盟司机";
                        break;
                    case "2":
                        e.Row.Cells[1].Text = "公司司机";
                        break; 
                }
            }

        }

    3.行绑定的时候读取datakeynames中的数据源字段

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
          if (e.Row.RowType == DataControlRowType.DataRow)
            {
                DataKey datakey = GridView1.DataKeys[e.Row.RowIndex];
                //string DAA_Del = datakey["DAA_Del"].ToString();

                if (datakey["FOC_Del"].ToString() == "True")
                {
                    e.Row.Cells[1].Enabled = false;
                    e.Row.Cells[2].Enabled = false;
                }
                else
                {
                    e.Row.Cells[1].Enabled = true;
                    e.Row.Cells[2].Enabled = true;
                }

        }

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
           if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes.Add("onclick", "javascript:alert('当前ID为:" +DataBinder.Eval(e.Row.DataItem,"CID") + "')");
            }
        }
    复制代码

    我做的是点击当前行获取该行指定字段的值!CID为欲求得值的字段的Id。

    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(),需要注意的是不要写错字段名称。

    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自动为此强类型生成的创建数据行对象的方法。通过此法,实现了类型化数据的广泛应用。数据类型化的好处很多,显而易见的便是传一个类型数据给方法,取代一大堆参数,另外就是再也不会发生字段名拼写错误的情况。

  • 相关阅读:
    jQuery index()方法使用
    杂记
    Tp框架代码杂记
    tp U方法的{:U('Index/index',array('id'=>$vo[id]))}
    mb_substr=0,5,'utf-8'
    Thinkphp 超长sql语句编写
    http_build_query()生成url字符串
    html_entity_decode 将数据库里的 | 互联网金融 “野蛮生长” 的休止符| &rdquo转义成”“
    ThinkPHP 左右定界符
    python中unicode和str的组合
  • 原文地址:https://www.cnblogs.com/asdyzh/p/9750603.html
Copyright © 2020-2023  润新知