Gridview问题

时间:2012-06-01 13:48:52

标签: asp.net sql vb.net gridview

我有一个包含四个模板字段的gridview,我需要能够将信息保存到数据库中。当我点击编辑按钮并且我的列变为编辑模式时,我可以输入信息就好......但是当我尝试循环控制以获取信息时它不会选择任何东西?

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 

2 个答案:

答案 0 :(得分:0)

尝试删除此检查(如果您在rowupdating事件中从模板控件获取值):

If Not IsPostBack Then

End If 

答案 1 :(得分:0)

我不会从GridView行中提取控件,而是使用您可以访问的GridViewUpdateEventArgs变量。您可以从NewValues属性中提取值(您可能还需要其他有用的属性 - 例如OldValuesRowIndex)。

您可以像这样访问它们:

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”字典以找到确切的键。如果您有任何问题,请告诉我。