【问题标题】:Update primary key in grid view更新网格视图中的主键
【发布时间】:2011-12-03 13:33:33
【问题描述】:

我目前正在为客户开发一个基于 Web 的应用程序。鉴于我应该制作一个允许他们更新clientID(PK)的功能的要求。我打算使用 gridview 来使它更容易。但是,我真的不知道如何使主键字段可以更新。

在我的客户表中,我有:clientID(PK)、clientName、clientAddress 等。

如果有人能告诉我该怎么做,我将不胜感激。提前致谢。

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    主键是您不想更新的东西,因为它会破坏外键引用。如果客户需要一个需要更改的 ID,它只需要是表中的另一个字段,而不是主键。

    【讨论】:

    • 我的客户是学校董事会。在我的国家,当你 12 岁以下时,他们将你的出生证明号码作为 ID 存储在学校,但之后你会得到一张身份证,卡上的号码将用作学生 ID。这就是为什么我的客户需要更新主键。
    • 这并不意味着它应该是主键。主键可以/应该是一个自动递增的整数。您可能正在考虑为速度编制索引的查找字段。
    • 我仍然认为 StudentID 应该是学生表中不是主键的列。只需添加一个作为主键的 Id 列,并将其链接到教室和学校成绩等等。这样就可以在不丢失这些引用的情况下更新 StudentID。 StudentID 也可以打印在报告上,而内部主键永远不会对用户可见(这对于主键来说并不少见)
    • “它会破坏外键引用”没有意义,因为您可以使用级联关系约束。我刚刚发布了一个可行的解决方案。
    【解决方案2】:

    这行得通:

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多