0

我的 SQLDataSource 中有一个 UpdateQuery,其中的参数是从 SessionParameter 提供的。SessionParameter 的值是通过单击 gridview 的按钮从我的代码隐藏中设置的。

目标是当用户单击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

任何想法为什么它不起作用?我认为这很简单,除非我遗漏了一些明显的东西?

4

1 回答 1

0

对不起!通过使用后面的代码自己解决问题。在我的 rowcommand 方法中,我使用 updateparameters 将值传递到我的 where 并解决了问题!

于 2012-06-13T15:03:29.227 回答