使用TemplateField作为GridView的PK

本文关键字:PK GridView 作为 TemplateField 使用 | 更新日期: 2023-09-27 17:58:58

我想使用一个自动递增的模板字段,而不是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>

使用TemplateField作为GridView的PK

我建议使用窗口化(在视图中)来模拟主键,并将视图绑定到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