Asp.Net 中的GridView 添加行单击事件

这两天做CRM时用到GridView显示数据。 为了提高用户体验。想写一个单机行的事件。 结果发现GridView竟然没有这个事件  只好求助百度大神了。

最终终于找到了解决办法。好了 废话不多说了。 贴上代码

首先 在前台设置一个隐藏的ButtonField

 

< Columns >
                    
< asp:ButtonField Visible = " False "  Text = " SingleClick "  CommandName = " SingleClick "   />
</ Columns >

然后在RowDataBound和RowCommand事件里写上这些代码。

     protected   void  gvRoleInfos_RowDataBound( object  sender, GridViewRowEventArgs e)
    {
        
if  (e.Row.RowType  ==  DataControlRowType.DataRow) 
        {
            LinkButton _singleClickButton 
=  (LinkButton)e.Row.Cells[ 0 ].Controls[ 0 ];
            
string  _jsSingle  =  ClientScript.GetPostBackClientHyperlink(_singleClickButton,  "" );
            e.Row.Attributes[
" onclick " =  _jsSingle;
            
            
            
        }
    }
 
 
  protected   void  gvRoleInfos_RowCommand( object  sender, GridViewCommandEventArgs e)
    {
        GridView _gridview 
=  sender  as  GridView;
        
int  _selectIndex  =   int .Parse(e.CommandArgument.ToString());
        
string  _commandName  =  e.CommandName;
        
if  (_commandName  ==   " SingleClick "
        {
            _gridview.SelectedIndex 
=  _selectIndex;
        }
        
    }

然后在本页面重写Render方法

 

     protected   override   void  Render(HtmlTextWriter writer)
    {
        
foreach  (GridViewRow row  in  gvRoleInfos.Rows) 
        {
            
if  (row.RowType  ==  DataControlRowType.DataRow) 
            {
                Page.ClientScript.RegisterForEventValidation(row.UniqueID 
+   " $ct100 " );
                Page.ClientScript.RegisterForEventValidation(row.UniqueID 
+   " $ct101 " );
                Page.ClientScript.RegisterForEventValidation(row.UniqueID 
+   " $ct102 " );
            }
        }
        
base .Render(writer);
    }

 

这样就可以运行了。  可能会出现  

这时候需要在前台页面中的添加 EnableEventValidation属性。 并设置为false

<% @ Page EnableEventValidation = "false "   %>

这样基本上就没有问题了。

本文只是为了方便大家进行快速开发。 所以对其原理不甚了解。(本文作者开发时间较短)  有理解的可以给些说明。

原文地址:http://www.cnblogs.com/webabcd/archive/2007/04/22/723113.html

英文地址:http://www.codeproject.com/KB/webforms/EditGridviewCells.aspx

 

转载于:https://www.cnblogs.com/peng-li/archive/2011/04/28/2032027.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值