2017-04-06 14 views
1

GridView_RowUpdatingイベントでエラーが発生しました(インデックスが範囲外です。負でなく、コレクションのサイズより小さい必要があります。 パラメータ名:index)。私はここにいくつかのアイデアを投稿しましたが、まだこのエラーが発生しています。インデックスが範囲外です。負でなく、コレクションのサイズより小さくなければなりません。

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    Label stu_name= ((Label)GridView1.Rows[e.RowIndex].FindControl("student_Name")); 
} 
+0

デバッグをお試しください。おそらく行が選択されていないときは '-1'です。 –

+0

rowindex(e.RowIndex)が正しく表示されます – user7415073

+0

'GridView1.Rows.Count'と 'e.RowIndex'でデバッグ中にWatchを追加し、問題の調査のために両方の式の結果を共有します。 –

答えて

0

後ろ

コード符号化器のバイアスが所望の結果を生成するコードを取得することであるが、例外が発生した場合、それが再び起こることを意味します。

最初から仮定でもう少し保守的にもおそらく良いアイデアを結合するすべてのデータを把握し、黒魔術をビューステートが、これにグレート:ViewStateのがGridView1のために有効になっている場合

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    var grid = sender as Grid; 
    if (grid == null) return; 

    var rowIndex = e.RowIndex; 
    var rows = grid.Rows; 
    if (rowIndex < 0 || rowIndex > rows.Count - 1) return; 
    Label stu_name= ((Label) rows[rowIndex].FindControl("student_Name")); 
} 
0

をチェック。

ViewStateが無効になっていると、ASP.NETがUpdateやその他のイベントを処理して前のデータも保持する必要があるため、ASP.NETは正しく更新できません。あなたはPage_Loadの中にDataBindを行っている場合GridView1.Rows.Countはまた0

になりますので、場合

、ViewStateの== falseを、GridView1.Rows[e.RowIndex]は、その後、あなただけ!IsPostBackプロパティ場合はデータバインドを確認して、失敗します。

if(!IsPostBack) 
// DataBind Grid .. 
+0

ちょうど今注目しています。Rowediting Event Firing Twice、初めてEmptyDataTemplate Textを表示するgrid.butを表示します。 – user7415073

+0

Ok。各PostBackでBindDataを使用しないようにしてください。 IsPostBackがDataBindの前にチェックしてください。 – Habeeb

関連する問題

 関連する問題