我想使用自动递增的模板字段而不是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>
答案 0 :(得分:0)
我建议使用窗口(在视图中)来模仿主键,并将视图绑定到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