问题描述
protectedvoidButton1_Click(objectsender,EventArgse){...........GridView2.DataSource=MiningResult;GridView2.DataBind();GridView2.HeaderRow.Cells[0].Text="事务";}...................protectedvoidGridView2_SelectedIndexChanged(objectsender,EventArgse){stringa=GridView2.Rows[this.GridView2.SelectedIndex].Cells[0].Text.Trim();}MiningResult是一个ArryList,我想把它里面的数据在GridView2里显示(数据只有一列),然后单击GridView2里的某一行后把这行的这个数据赋给a,我该怎么做啊,像上面我这样写了后,单击button1后GridView2能正常显示数据,可单击行后总提示索引超出范围,设置断点查看发现在GridView2_SelectedIndexChanged事件里GridView2是没数据的。我应该怎么修改才能实现这个功能?
解决方案
解决方案二:
this.GridView2.SelectedIndex].Cells[1]不是this.GridView2.SelectedIndex].Cells[0]
解决方案三:
另外,EnableViewState="true"是必须的。例如<%@PageLanguage="C#"AutoEventWireup="true"EnableViewState="true"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><scriptrunat="server">protectedvoidGridView2_SelectedIndexChanged(objectsender,EventArgse){stringa=GridView2.Rows[this.GridView2.SelectedIndex].Cells[1].Text.Trim();Label1.Text=a;}protectedvoidButton1_Click(objectsender,EventArgse){ArrayListal=newArrayList();al.Add("AA");al.Add("BB");GridView2.DataSource=al;GridView2.DataBind();GridView2.HeaderRow.Cells[0].Text="事务";}</script><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><body><formid="form1"runat="server"><asp:GridViewID="GridView2"runat="server"OnSelectedIndexChanged="GridView2_SelectedIndexChanged"AutoGenerateSelectButton="true"></asp:GridView><asp:ButtonID="Button1"runat="server"Text="Button"OnClick="Button1_Click"/><asp:LabelID="Label1"runat="server"Text="Label"></asp:Label></form></body></html>
解决方案四:
引用1楼net_lover的回复:
this.GridView2.SelectedIndex].Cells[1]不是this.GridView2.SelectedIndex].Cells[0]
不行还是提示索引超出范围在断点里看似乎单击行的时候gridview里就没数据一样,可点击button后gridview里都显示出来了啊
解决方案五:
建议你先把那个古老的教程的从第一篇开始的所有例子做一遍,然后再问。你会看到,比如说,人家很少写Page_Load中的代码的,也不禁用GridView的ViewState的。丢失了GridView2的行(asp.net没有自动重建GridView2的行),可能是你禁用了ViewState,也可能是你的Page_Load中写了不该写的初始化代码。
解决方案六:
引用3楼u010450327的回复:
Quote: 引用1楼net_lover的回复:
this.GridView2.SelectedIndex].Cells[1]不是this.GridView2.SelectedIndex].Cells[0]不行还是提示索引超出范围在断点里看似乎单击行的时候gridview里就没数据一样,可点击button后gridview里都显示出来了啊
直接拷贝粘贴上面的代码就可以看效果了。你怎么测试的不行?