1

編集ボタンをクリックした後、データグリッドビュー行の特定のコントロールにフォーカスを設定するにはどうすればよいですか? グリッドがバインドされている場合、新しい行に対しては実行できますが、既存の行に対しては実行できません。コントロールはまだ存在していないようです。

'これは機能しません (既存の行)

Protected Sub gvDays_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs) Handles gvDays.RowEditing
        Try
            gvDays.EditIndex = e.NewEditIndex
            gvDays.Rows(e.NewEditIndex).FindControl("txtDayText").Focus()
        Catch ex As Exception
            Helper.WriteException(ex)
        End Try
    End Sub

'これは、新しくバインドされた行に対して機能します

Private Sub gvDays_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvDays.RowDataBound
        If e.Row.RowState = DataControlRowState.Edit Then
            e.Row.Cells(3).Controls(0).Focus()
        End If
    End Sub
4

1 に答える 1

4

gvDays_RowDataBound動作するはずです。問題はe.Row.RowState= 演算子を使用して見ていることですがRowState、ビットフラグです

これを試して

Private Sub gvDays_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvDays.RowDataBound
        If (e.Row.RowState And DataControlRowState.Edit) = DataControlRowState.Edit Then
            e.Row.Cells(3).Controls(0).Focus()
        End If
End Sub
于 2009-12-14T18:51:21.543 に答える