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