我需要一种方法来获取在数据绑定的GridView中点击“删除”按钮的行的列值。数据绑定GridView中的值是来自链接表的值,当在其中一行上点击“删除”时,我想从数据库中删除该条目。
这是我的gridview
<asp:GridView
ID="GridView1"
runat="server"
AllowPaging="True"
AutoGenerateColumns="False"
DataSourceID="SqlDataSource1"
DataKeyNames="Session[userId'],courseId" //< ? for 'userId'
style="z-index: 1; left: 222px; top: 139px; position: absolute; height: 299px; width: 458px">
<Columns>
<asp:CommandField ShowDeleteButton="True" />
<asp:BoundField DataField="department" HeaderText="Department" SortExpression="department" />
<asp:BoundField DataField="courseCode" HeaderText="Course" SortExpression="courseCode" />
<asp:BoundField DataField="courseName" HeaderText="Name" SortExpression="courseName" />
</Columns>
</asp:GridView>
这是我目前正在进行的SQLDataSource工作。我将需要上面的“courseCode”和“courseName”值来选择(来自不同的)表一个唯一的“courseId”,我使用会话变量Session [“userId”]从我的表中删除条目,从而更新我的GridView的。
这里重要的是说我的select语句只接受一个变量(它使用Session [“userId”]),而我的delete语句不仅使用Session [“userId”],它还使用了两个其他变量。
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="GetPreviouslyTakenCourses"
SelectCommandType="StoredProcedure"
DeleteCommand="DELETE FROM UserHasCourse WHERE UserHasCourse.userId=@userId AND (SELECT Id FROM Courses WHERE courseCode=@courseCode AND courseName=@courseName)">
<SelectParameters>
<asp:SessionParameter DefaultValue="1" Name="userId" SessionField="userId" Size="10" Type="Int32" />
</SelectParameters>
<DeleteParameters>
<asp:SessionParameter Name="userId" SessionField="userId" />
<asp:Parameter Name="courseCode" />
<asp:Parameter Name="courseName" />
</DeleteParameters>
</asp:SqlDataSource>
我知道我缺少一些东西,如果需要任何其他信息,我可以更新我的问题。
更新1:需要将DataKeyNames移动到GridView中。另一个问题是如何将Session变量传递给DataKeyNames
更新2:已删除ControlID。 ControlParameter在SQLDataSource中更改为Parameter(这是正确的吗?)
更新3:我能否在我的选择查询中获取userId值(等于Session [“userId”]),并将其隐藏,从而能够在我的删除声明?