ASP.NET GridView 后台绑定行点击行触发SelectedIndexChanged,页面刷新后,只有一页的情况下,事件只触发一次

如题,小弟刚接触asp.net不久,所以有很多不懂,望高手们不吝赐教。

下面进入正题,后台代码如下

<pre name="code" class="csharp"> 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='';");
            //当鼠标放上时,指针为手指的形状
            e.Row.Attributes["style"] = "cursor:hand";

            //添加行点击事件
            //e.Row.Attributes.Add("onclick", "SelectClick(" + e.Row.RowIndex + ")");

            //点击行触发SelectedIndexChanged事件
            PostBackOptions myPostBackOptions = new PostBackOptions(this);
            myPostBackOptions.AutoPostBack = false;
            myPostBackOptions.PerformValidation = false;
            myPostBackOptions.RequiresJavaScriptProtocol = true; //加入javascript:头
            String evt = Page.ClientScript.GetPostBackClientHyperlink(sender as GridView, "Select$" + e.Row.RowIndex.ToString());
            e.Row.Attributes.Add("onclick", evt);
        }

希望在页面点击一行的时候产生一个SelectedIndexChanged事件以便处理的,结果出现了一下情况

当这个gridview有分页的时候,点击行是可以触发时间的,无论页面刷新多少次,图如下:


,但是当gridview只有一页的时候,第一次点击行会触发SelectedIndexChanged事件,但是第二次、第三次、。。点击就不触发事件了,图如下:


小弟用的google浏览器,审查元素时出现如下错误


审查元素——》查看没点击之前的页面,发现页面有这样一个地方


点击之后,审查元素,发现相同的两个div变成了下面的样子


明显的第一个图中的第一个div中比第二个多了几个隐藏的input,同时这两个div中间少了一段js,其中就包含了__doPostBack方法,点击之后,页面刷新了就没有了,这个问题一直都让我很困扰,在网上查找了半天也没找到合适的解决方法,希望有高手看到解答一下,同时也记录下自己遇到的问题,以便某一天遇到同样的问题无从下手。</span>



发布了1 篇原创文章 · 获赞 0 · 访问量 1890
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览