2012-11-15 2 views
0

내가있는 gridview를 가지고 있고, 나는 그것에 SelectedIndexChanged 이벤트가 ...인덱스가 범위를 벗어 났지만 그 이유는 무엇입니까?

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    GridViewRow Row = GridView1.SelectedRow; 

    //do some stuff 
} 

그런 다음 오류가 발생합니다 ...

인덱스 범위를 벗어난 것입니다. 음수가 아니어야하며 콜렉션의 크기보다 작아야합니다. 매개 변수 이름 : index

Gridview가 pageload에서 바인드되는 이유를 알 수 없습니다. 하지만 다시하지 포스트 ...

if (!IsPostBack) 
{ 
    GridView1.DataSource = UserAccounts; 
    GridView1.DataBind(); 
} 
+1

오류가 그 라인에 슬로우됩니다 확신에서 봐 주시기 바랍니다? – Arran

+0

뭔가를 추가하는 것을 잊었습니까? 'IndexOutOfRangeException'을 어디에서 얻을 수 있습니까? –

+0

당신은''/ do some stuff'에서 몇 가지 일을하고 있습니까? 그리고 에러가 던져지는 곳을 언급하지 않았다. –

답변

3

DataSource 컨트롤이 자동으로이 문제를 해결할 수 있지만 수동으로 GridView 바인딩하는 경우, 당신은 또한 PostBack에 바인딩해야하는 asp.net. 필터 등을 기반으로 데이터 소스를 변경하는 경우 리 바인드해야합니다.

+0

나는 또한 postpage에 대한 바인딩을 시도했지만, 나는 여전히 오류가 발생한다 : ( – Stuart

1

우선 : 사용자 정의로 수동으로의 GridView 바인딩 경우 : 다시 서버에 게시, 당신의 GridView1이 GridView1.DataSource는 이전 데이터

if (!IsPostBack) 
{ 
     GridView1.DataSource = UserAccounts; 
     GridView1.DataBind(); 
} 

두 번째 일을 잃은 것 때문에 다시 초기화됩니다 DataTable, List .... 특정 DataKey를 사용하여 RowCommand를 구현해야합니다.

이 문서 http://aspspirits.blogspot.com/2012/08/how-to-get-rowindex-of-aspnet-gridview.html

+0

Posted, Checked, Checked. – San

관련 문제