【问题标题】:Use TemplateField as PK for GridView使用 TemplateField 作为 GridView 的 PK
【发布时间】:2016-07-26 17:55:01
【问题描述】:

我想使用自动递增的模板字段而不是 DataKeyName 作为更新/删除 GridView 的因素。我的理由是因为可以有多个具有相同 ID 的条目(数据库中没有 pk)。

网格视图代码:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" ShowFooter = "True"
    AllowSorting="True" AutoGenerateColumns="False" CellPadding="4"
    DataSourceID="SqlDataSource1" >

我的自动递增列的代码:

  <asp:TemplateField ShowHeader="False" Visible="False" HeaderText="PK">
            <ItemTemplate>
                <span>
                    <%# Container.DataItemIndex +1 %>
                </span>
            </ItemTemplate>
        </asp:TemplateField>

【问题讨论】:

    标签: c# sql asp.net gridview


    【解决方案1】:

    我建议使用窗口(在视图中)来模拟主键,并将视图绑定到 GridView 而不是表。

    create table dbo.temp (TheData varchar(255));
    
    go
    
    insert into dbo.temp values ('Alpha'), ('Bravo'),  ('Charlie'), ('Delta'), ('Echo'), ('Foxtrox');
    
    go
    
    create view dbo.tempView 
    
    as
    
    select
        Id = ROW_NUMBER() over (order by TheData), -- mimics primary key
        TheData
    from
        dbo.temp
    
    go
    
    select Id, TheData from dbo.tempView; -- use this as your data source
    

    【讨论】:

      猜你喜欢
      • 2010-12-11
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      相关资源
      最近更新 更多