zoukankan      html  css  js  c++  java
  • GridView中添加行单击事件.md

    1.使用说明

    1.方法来源

    该方法主要参考StackOverflow上面的答案和下面这篇文章
    http://www.codeproject.com/Articles/15677/Clickable-and-Double-Clickable-Rows-with-GridView

    2.注意事项

    引入行单击事件会覆盖掉原始的单击事件和双击事件,所以如果不是有特殊功能需求,使用前请慎重
    如果仅仅是简单的单击改变行样式,最好使用其它方法
    例如:http://blog.bossma.cn/dotnet/gridview-select-row-no-postback/ (使用javascript实现GridView无刷新选中行(变色))

    3.原理

    使用RowDataBound事件,添加并隐藏选择列,给每行添加点击事件


    2.Code

    1.前台

    GridView列中添加选择列

    <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    

    GridView添加OnRowDataBound事件

    OnRowDataBound="GridViewOrder_RowDataBound"
    

    2.后台

    RowDataBound事件

    protected void GridViewOrder_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if ((e.Row.RowState & DataControlRowState.Edit) != DataControlRowState.Edit)
            {
                // 隐藏选择列
                // 具体是Cells[n]看具体情况,也可以一开就把选择列甩在GridView的最开始
                GridViewOrder.HeaderRow.Cells[8].Visible = false;
                e.Row.Cells[8].Visible = false;
                //增加点击事件
                PostBackOptions myPostBackOptions = new PostBackOptions(this);
                myPostBackOptions.AutoPostBack = false;
                myPostBackOptions.RequiresJavaScriptProtocol = true;
                myPostBackOptions.PerformValidation = false;
                String evt = Page.ClientScript.GetPostBackClientHyperlink(sender as GridView, "Select$" + e.Row.RowIndex.ToString());
                e.Row.Attributes.Add("onclick", evt);
            }
        }
    }
    

    重写Render事件

    /// <summary>
    /// 重写了Render,使得Select按钮支持了不安全的postback
    /// 使用时,只需要替换掉两个GridViewOrder即可
    /// </summary>
    /// <param name="writer"></param>
    protected override void Render(HtmlTextWriter writer)
    {
        foreach (GridViewRow r in GridViewOrder.Rows)
        {
            if (r.RowType == DataControlRowType.DataRow)
            {
                Page.ClientScript.RegisterForEventValidation(GridViewOrder.UniqueID, "Select$" + r.RowIndex);
            }
        }
        base.Render(writer);
    }
    

    SelectedIndexChanging事件
    在里面可以写具体的单击事件代码

    protected void GridViewOrder_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        // 没有任何后台代码,仅通过前台的 SelectedRowStyle 配合实现了单击行更改样式的功能
    }
    
  • 相关阅读:
    k8s-HPA自动伸缩pod数量
    k8s-命令使用
    k8s-业务镜像版本升级及回滚
    k8s-yml文件详解
    k8s-部署dashboard
    k8s-kubeasz项目后期添加节点及k8s版本升级
    k8s-部署kube dns及coredns
    CDNbest-访问限制
    CDNbest-访问限制
    CDNbest-改变回源host
  • 原文地址:https://www.cnblogs.com/moonache/p/5498527.html
Copyright © 2011-2022 走看看