繁体   English   中英

使用TemplateField作为GridView的PK

[英]Use TemplateField as PK for GridView

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

Gridview代码:

<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>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM