我的更新sql过程是
ALTER PROCEDURE [dbo].[usp_update]
@ID uniqueidentifier,
@Period nvarchar(6),
@News nvarchar(max),
@Editor nvarchar(30)
as
begin
update table1
set News= @News, Editor=@Editor, LastRevNT=getdate()
where ID=@ID and Period=@Period
end
我的asp.net网格视图是
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True">
<Columns>
asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="Period" HeaderText="Period" SortExpression="Period" ReadOnly="True"/>
<asp:BoundField DataField="News" HeaderText="News" SortExpression="News" />
<asp:BoundField DataField="Editor" HeaderText="Editor" SortExpression="Editor" ReadOnly="True" />
</Columns>
数据源是
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="usp_select" SelectCommandType="StoredProcedure" UpdateCommand="usp_update" UpdateCommandType="StoredProcedure">
<SelectParameters>
<asp:SessionParameter DefaultValue="" Name="ID" SessionField="SelectedID" dbType="guid" />
</SelectParameters>
<UpdateParameters>
<asp:SessionParameter DefaultValue="" Name="ID" SessionField="SelectedID" dbType="guid" />
<asp:SessionParameter DefaultValue="" Name="Editor" SessionField="SelectedEditor" dbType="string"/>
<asp:Parameter Name="Period" Type="String" />
<asp:Parameter Name="News" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
问题是当我更新表时,我需要ID和[Period]来获取唯一记录。 在gridview中,我不想修改[句点]。当我将句点的边界设置为只读时,我无法访问句点的值,因此无法更新正确的记录。
我想知道如何处理这个问题?
感谢您的建议!
答案 0 :(得分:0)
我添加了DataKeyNames =&#34; ID,Period&#34;在我的aspgridview中,它现在可以正常工作了。谢谢你的建议!