Asp.Net GridView点击/选中单行触发SelectedIndexChanged事件

    // RowDataBound(行数据绑定事件)
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        // //判断是否为数据行(排除标题行)
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            // 设置鼠标划过行的手势
            e.Row.Attributes["style"] = "cursor:hand";
            #region 【 点击行触发SelectedIndexChanged事件 】
            // 创建回发选项对象
            PostBackOptions myPostBackOptions = new PostBackOptions(this);
            // 自动提交
            myPostBackOptions.AutoPostBack = false;
            // 性能验证
            myPostBackOptions.PerformValidation = false;
            //需要JavaScript协议(如果为客户端脚本生成了 javascript: 前缀,则为 true;否则为 false。 默认值为 true。)
            myPostBackOptions.RequiresJavaScriptProtocol = true;
            // 获取回发客户端超链接
            String evt = Page.ClientScript.GetPostBackClientHyperlink(sender as GridView, "Select$" + e.Row.RowIndex.ToString());
            // 添加点击事件
            e.Row.Attributes.Add("onclick", evt);
            #endregion
        }
    }

注意:在我的个人测试中,我发现了一个问题,那就是只能选中行一次,然后第二次就不能再次选中行了!

           后来我的解决办法是:往GridViw控件添加一个列,大家可以把这个列放在最后一个列,方便操作隐藏,

           这个列具体怎么添加呢?下面详细解答哈!哈哈!

第一步:

Asp.Net GridView点击/选中单行触发SelectedIndexChanged事件_第1张图片

第二步:

               Asp.Net GridView点击/选中单行触发SelectedIndexChanged事件_第2张图片

第三步:当然是选择编辑列,鼠标点击!(图片省略)

第四步:根据图片的步骤一步步来,最后那一步是将此字段转换为TemplateField,然后可以在里面隐藏这个列了,设置样式,把宽度高度设置0px,最后把文本描述去除就OK了!简单吧!

Asp.Net GridView点击/选中单行触发SelectedIndexChanged事件_第3张图片

第五步:将刚才那个选择列字段转成TemplateField,就变成这样子了!对吧!然后把记得把Text内容清空!(实现隐藏的效果)

Asp.Net GridView点击/选中单行触发SelectedIndexChanged事件_第4张图片

第六步:在Page 添加一个属性:EnableEventValidation="false" 并且设置为false(解决提示错误!小编当时的环境是会报错的!加了这个属性之后,就不会报错了,这个属性的意思是,取消验证的意思) 

Asp.Net GridView点击/选中单行触发SelectedIndexChanged事件_第5张图片


第七步:完整的效果如下:

Asp.Net GridView点击/选中单行触发SelectedIndexChanged事件_第6张图片

最后小编想说的是:但愿这个简陋的教程对你们有帮助吧!

你可能感兴趣的:(C#,Asp.Net)