GridViewのデータバインディングについて、MSDNにはいろいろな例がありますが、
EIDTモード場合のバインディングは足りないと思います。
GridViewはDatatableにバインディングした後、Editモードにするのはどうすればいいか、
はっきりしていないです。
実際にはGridViewのEditIndexを設定すればOKです。
即ち、以下のソースで説明します。
Protected Sub Grid_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs) _
Handles grd.RowEditing
’編集開始イベントの中で、新たな編集先行番を設定する必要です。
grd.EditIndex= e.NewEditIndex
'設定完了後、再びGridにDataSourceのバインディングが必要です。
grd.DataBind()
End Sub
なお、編集キャンセルしたい場合、GridView.EditIndex=-1にリセットが必要です。
キャンセルボタンに関連することも可能です。
Protected Sub Grid_RowCancelingEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs) _
Handles grd.RowCancelingEdit
grd.EditIndex= -1
grd.DataBind()
End Sub
===============
同じく、GridViewの行選択が変わりたい場合、GridView.SelectedIndexの指定が必要です。
以下例:
Protected Sub Grid_SelectedIndexChanging(ByVal sender As Object, ByVal e As GridViewSelectEventArgs) Handles grd.SelectedIndexChanging
grd.SelectedIndex = e.NewSelectedIndex
grd.DataBind()
End Sub
===============
同じくGridViewの頁が変わりたい場合、GridView.PageIndexの指定が必要です。
以下例:
Protected Sub Grid_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) _
Handles grd.PageIndexChanging
if grd.PageIndex <> e.NewPageIndex then
grd.PageIndex = e.NewPageIndex
End If
grd.DataBind()
End Sub
以上の例は皆変更しようとすると、対応Indexの設定が必要で、その後またDataBind()の再バインディングが必要です。しないと、データが表示しないです。
grdのDataSourceはGridViewのEnableViewState=trueの場合(ディフォルトはtrue)、ViewStateの保存されます、再DataSourceの指定は不要です、逆に指定したら、新たなDataSourceとして扱うことになります。
没有评论:
发表评论