【发布时间】:2011-12-03 13:33:33
【问题描述】:
我目前正在为客户开发一个基于 Web 的应用程序。鉴于我应该制作一个允许他们更新clientID(PK)的功能的要求。我打算使用 gridview 来使它更容易。但是,我真的不知道如何使主键字段可以更新。
在我的客户表中,我有:clientID(PK)、clientName、clientAddress 等。
如果有人能告诉我该怎么做,我将不胜感激。提前致谢。
【问题讨论】:
我目前正在为客户开发一个基于 Web 的应用程序。鉴于我应该制作一个允许他们更新clientID(PK)的功能的要求。我打算使用 gridview 来使它更容易。但是,我真的不知道如何使主键字段可以更新。
在我的客户表中,我有:clientID(PK)、clientName、clientAddress 等。
如果有人能告诉我该怎么做,我将不胜感激。提前致谢。
【问题讨论】:
主键是您不想更新的东西,因为它会破坏外键引用。如果客户需要一个需要更改的 ID,它只需要是表中的另一个字段,而不是主键。
【讨论】:
这行得通:
Protected Sub GridView1_rowupdating(sender As Object, e As GridViewUpdateEventArgs) Handles GridView1.RowUpdating
e.NewValues("id2")=e.NewValues("id")
End Sub
<asp:GridView ID="GridView1" DataSourceID="ds_myTable" DataKeyNames="id" Runat="Server">
<columns>
<asp:CommandField ShowEditButton="True" HeaderStyle-Width="100px"/>
<asp:BoundField DataField="id" HeaderText="Id" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="someField" HeaderText="someField" />
</columns>
</asp:GridView>
<asp:SqlDataSource id="ds_myTable"
ConnectionString="<%$ connectionStrings: ... %>"
ProviderName="<%$ ConnectionStrings: ... %>"
SelectCommand="SELECT * from myTable Order By id;"
UpdateCommand= "UPDATE myTable SET id=@id2,someField=@someField WHERE id=@id"
runat="Server">
<UpdateParameters>
<asp:Parameter Name="someField" Type="String" />
<asp:Parameter Name="id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
【讨论】: