1

データベースに保存するために情報を入力できるようにする必要がある 4 つのテンプレート フィールドを持つグリッドビューがあります。編集ボタンを押して列が編集モードに変わると、情報をうまく入力できます...しかし、コントロールをループして情報を取得しようとすると、何も取得されませんか?

Private Sub gvOLIAdj_RowEditing(sender As Object, e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvOLIAdjst.RowEditing     
    gvOLIAdjst.EditIndex = e.NewEditIndex     
    BindData()  
End Sub 

ここに私がこれまでに持っている更新イベントがあります...何かアイデアはありますか? 私はこれを正しくしていないだけですか?

Private Sub gvOLIAdj_RowUpdating(sender As Object, e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvOLIAdjst.RowUpdating     
Dim dts As DataTable = DirectCast(Session("BudgetsTable"), DataTable)     
Dim row As GridViewRow = gvOLIAdjst.Rows(e.RowIndex)     
If DirectCast(row.FindControl("txtItemTempTtlAmt"), TextBox).Text = "" Then           
    lblError.Text = "Invalid Entry. Correct and try again"         
    e.Cancel = True     
Else        
    lblError.Text = ""         
    dts.Rows(row.DataItemIndex)("Approval Date") = DirectCast(row.FindControl("txtItemTempApprDt"), TextBox).Text         
    dts.Rows(row.DataItemIndex)("Total Amount") = DirectCast(row.FindControl("txtItemTempTtlAmt"), TextBox).Text         
    dts.Rows(row.DataItemIndex)("Comments") = DirectCast(row.FindControl("txtItemTempCmmt"), TextBox).Text         
    dts.Rows(row.DataItemIndex)("Initials") = DirectCast(row.FindControl("lblItemTempInit"), Label).Text          

    gvOLIAdjst.EditIndex = -1         
    BindData()      
End If
If Not IsPostBack Then
        result = dal.dbConnect(sqlconnection, ConfigurationManager.AppSettings("SQLServerConnection"))
        If result = "Successful" Then
            dt = ExecuteInsertUpdateDeleteStoredProc(sqlconnection, "@amt", txtItemTempApprDt.text)
            dbClose
        End If

    End If 
End Sub 
4

2 に答える 2

0

GridView 行からコントロールを取得するのではなく、GridViewUpdateEventArgsそこにアクセスできる変数を使用します。プロパティから値を取得できNewValuesます (必要になる可能性のある他の便利なプロパティもあります -OldValuesや などRowIndex)。

次のようにアクセスします。

e.NewValues("Data Field Name").ToString()

「データ フィールド名」はその値のキーです (GridViewデータセット内のフィールドの名前)。

このようなものが動作するはずです

dts.Rows(row.DataItemIndex)("Approval Date") = e.NewValues("Approval Date").ToString()
dts.Rows(row.DataItemIndex)("Total Amount") = e.NewValues("Total Amount").ToString()
dts.Rows(row.DataItemIndex)("Comments") = e.NewValues("Comments").ToString()
dts.Rows(row.DataItemIndex)("Initials") = e.NewValues("Initials").ToString()

そこに表示されているキーは正確ではない可能性があります。データを GridView にバインドする方法がわからないからです。ブレークポイントを設定し、「NewValues」ディクショナリを調べて正確なキーを見つけることができると思います。ご不明な点がございましたら、お知らせください。

于 2012-06-01T16:26:17.457 に答える
0

このチェックを削除してみてください (rowupdating イベントでテンプレート コントロールから値を取得している場合)。

If Not IsPostBack Then

End If 
于 2012-06-01T13:55:14.010 に答える