日期:2014-05-19  浏览次数:20540 次

gridview换页后,怎么得到行的内容?????立马结贴
protected   void   GridView1_RowCommand(object   sender,   GridViewCommandEventArgs   e)
        {
                if   (e.CommandName   ==   "EditRole ")
                {

                        int   index   =   Convert.ToInt32(e.CommandArgument);
                        GridViewRow   row   =   GridView1.Rows[index];

                        string   m_Login   =   " ";
                        m_Login   =   GridView1.DataKeys[row.DataItemIndex].Value.ToString();

                        ViewState[ "Login "]   =   m_Login;
                       
                        //currencyLib.ShowMessage(this,   " ",m_Login);
                        txtLogin.Text   =   m_Login;
                        BindRoles(m_Login);
                        BindData(m_Login);
                   
                }
        }

这段代码在gridview的第一页是可以运行的,可是点了第二页就会出错.

提示

索引超出范围。必须为非负值并小于集合大小
参数名:   index  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.ArgumentOutOfRangeException:   索引超出范围。必须为非负值并小于集合大小。
参数名:   index

源错误:  


行   79:  
行   80:                           string   m_Login   =   " ";
行   81:                           m_Login   =   GridView1.DataKeys[row.DataItemIndex].Value.ToString();
行   82:  
行   83:                           ViewState[ "Login "]   =   m_Login;
 

源文件:   d:\Vs.net   2005\fjepcMis\yhgl\Yhjs.aspx.cs         行:   81  


------解决方案--------------------
m_Login = GridView1.DataKeys[row.DataItemIndex].Value.ToString();
直接用index不就行吗
------解决方案--------------------
m_Login = GridView1.DataKeys[row.DataItemIndex].Value.ToString();
row.DataItemIndex用e.Row.RowIndex替换
------解决方案--------------------
int index = Convert.ToInt32(e.CommandArgument); string m_Login = " "; m_Login = GridView1.DataKeys[index ].Value.ToString(); 这样应该就可。
------解决方案--------------------