我的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
为什么它不起作用的任何想法?除非我遗漏了一些明显的东西,否则我认为这是直截了当的?
答案 0 :(得分:0)
抱歉!使用后面的代码自己破解问题。在我的rowcommand方法中,我使用updateparameters将值传递给我的where,这解决了问题!