2012-06-13 24 views
0

我的SQLDataSource中有一個UpdateQuery,其中參數是從SessionParameter提供的。 SessionParameter的值是通過點擊gridview上的按鈕從我的代碼隱藏中設置的。SessionParameter和使用SqlDataSource更新查詢

目的是當用戶點擊gridview上的按鈕時,它通過gridview更新數據庫。我得到的問題是更新查詢沒有被執行,因爲我沒有看到用新值更新的行。我所做的調試顯示,我正在選擇的行上獲取所需的值,並且正在設置會話。

下面是相關的代碼片段:

<asp:SqlDataSource ID="JobNameDatasource" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 

SelectCommand="SELECT [JobName], [ChangedDate], [AdHocFlg] FROM [t_Config_iFace_Execution]" 
UpdateCommand="UPDATE [t_Config_iFace_Execution] SET [RunJob] = 1 WHERE [JobName] = @JobName"> 
<UpdateParameters> 
<asp:SessionParameter Name="JobName" SessionField="JobName"/> 
</UpdateParameters> 
</asp:SqlDataSource> 

Protected Sub RunJob_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) 
    If e.CommandName = "UpdateJob" Then 
    Dim btnRunJob As Button = TryCast(e.CommandSource, Button) 
    Dim gvr As GridViewRow = TryCast(btnRunJob.NamingContainer, GridViewRow) 
    Dim rowIndex As Integer = gvr.RowIndex 
    Dim Name As String = DirectCast(GridView1.DataKeys(rowIndex).Values("JobName"), String) 
    Session.Add("JobName", Name) 
    Label1.Text = Session("JobName") 
    End If 
End Sub 

任何想法,爲什麼它不工作?我認爲這將是直截了當的,除非我失去了明顯的東西?

回答

0

對不起!通過使用後面的代碼自己破解問題。在我的rowcommand方法中,我使用更新參數傳遞值到我的位置並解決了問題!