У меня есть сетка, которая правильно извлекает данные по мере необходимости.У меня настроены пользовательские запросы, так как я использую хранимые процедуры для обновления и удаления информации.Я выполняю команду удаления и команду обновления, но работает только команда удаления.
Кажется, что моя команда обновления настроена правильно, но когда я изменяю имя одного из элементов и нажимаю кнопку обновить,Сетка возвращается туда, где она была раньше, без изменений.Я также не получаю сообщение об ошибке, поэтому я не уверен, как решить эту проблему.Я обыскивал сеть, пытаясь найти ответ, но ни один из них не подходит для этой ситуации.Возможно ли, что «оригинальные» параметры вызывают проблему?Я хочу, чтобы сетка приняла старое значение в качестве проверки в таблице.Если это вызывает проблему, есть ли другой способ сделать это?
Заранее спасибо!
Вот мой код gridview:
<asp:GridView ID="gvArtists"
runat="server"
AllowPaging="True"
AllowSorting="True"
AutoGenerateColumns="False"
DataSourceID="gridView_Artists"
CssClass="table table-bordered table-condensed table-hover"
OnPreRender="gvArtists_PreRender"
OnRowDeleted="gvArtists_RowDeleted"
OnRowUpdated="gvArtists_RowUpdated">
<Columns>
<asp:BoundField DataField="artist_FirstName" HeaderText="First Name"
SortExpression="artist_FirstName" ItemStyle-CssClass="col-xs-3" >
<ItemStyle CssClass="col-xs-3"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="artist_LastName" HeaderText="Last Name"
SortExpression="artist_LastName" ItemStyle-CssClass="col-xs-3" >
<ItemStyle CssClass="col-xs-3"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="artist_band" HeaderText="Band"
SortExpression="artist_band" ItemStyle-CssClass="col-xs-3" >
<ItemStyle CssClass="col-xs-3"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="artist_type" HeaderText="Type"
SortExpression="artist_type" ItemStyle-CssClass="col-xs-3" >
<ItemStyle CssClass="col-xs-3"></ItemStyle>
</asp:BoundField>
<asp:CommandField CausesValidation="False" ShowEditButton="True">
<ItemStyle CssClass="col-xs-1 text-danger" />
</asp:CommandField>
<asp:CommandField CausesValidation="False" ShowDeleteButton="True">
<ItemStyle CssClass="col-xs-1" />
</asp:CommandField>
</Columns>
<HeaderStyle CssClass="bg-halloween" />
<AlternatingRowStyle CssClass="altRow" />
<PagerSettings Mode="NumericFirstLast" />
<PagerStyle CssClass="pagerStyle" BackColor="#a8c8c8c" HorizontalAlign="Center" />
<EditRowStyle CssClass="warning" />
</asp:GridView>
<asp:SqlDataSource
ID="gridView_Artists"
runat="server"
ConnectionString="<%$ ConnectionStrings:disk_inventoryConnectionString %>"
ConflictDetection="CompareAllValues"
SelectCommand="SELECT artist_FirstName,
artist_LastName,
artist_band,
artist_type
FROM ArtistInfo
ORDER BY artist_LastName"
DeleteCommand="sp_DeleteArtistInfo"
DeleteCommandType="StoredProcedure"
UpdateCommand="sp_UpdateArtistInfo"
UpdateCommandType="StoredProcedure">
<DeleteParameters>
<asp:Parameter Name="artist_FirstName" Type="String"></asp:Parameter>
<asp:Parameter Name="artist_LastName" Type="String"></asp:Parameter>
<asp:Parameter Name="artist_band" Type="String"></asp:Parameter>
<asp:Parameter Name="artist_type" Type="String"></asp:Parameter>
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="artist_FirstName"></asp:Parameter>
<asp:Parameter Name="artist_LastName"></asp:Parameter>
<asp:Parameter Name="artist_band"></asp:Parameter>
<asp:Parameter Name="artist_type"></asp:Parameter>
<asp:Parameter Name="original_artist_FirstName"></asp:Parameter>
<asp:Parameter Name="original_artist_LastName"></asp:Parameter>
<asp:Parameter Name="original_artist_band"></asp:Parameter>
<asp:Parameter Name="original_artist_type"></asp:Parameter>
</UpdateParameters>
</asp:SqlDataSource>
Вот мой сохраненныйпроцедуры для обновления:
create proc sp_UpdateArtistInfo
(
@artist_FirstName varchar(50),
@artist_LastName varchar(50),
@artist_band varchar(50),
@artist_type varchar(50),
@original_artist_FirstName varchar(50),
@original_artist_LastName varchar(50),
@original_artist_band varchar(50),
@original_artist_type varchar(50)
)
as
begin
--start error checking
begin try
update ArtistInfo
set
artist_FirstName = @artist_FirstName,
artist_LastName = @artist_LastName,
artist_band = @artist_band,
artist_type = @artist_type
WHERE artist_FirstName = @original_artist_FirstName
AND artist_LastName = @original_artist_LastName
AND artist_band = @original_artist_band
AND artist_type = @original_artist_type
--display the change
end try
begin catch
print error_message()
end catch
end
go
и для удаления:
create proc sp_DeleteArtistInfo
(
@artist_FirstName varchar(50),
@artist_LastName varchar(50),
@artist_band varchar(50),
@artist_type varchar(50)
)
as
begin
--start error checking
begin try
DELETE FROM DiskHasArtist
FROM DiskHasArtist INNER JOIN
ArtistInfo ON DiskHasArtist.artist_ID = ArtistInfo.artist_ID
WHERE ArtistInfo.artist_FirstName = @artist_FirstName
AND ArtistInfo.artist_LastName = @artist_LastName
AND ArtistInfo.artist_band = @artist_band
AND ArtistInfo.artist_type = @artist_type
delete from ArtistInfo
WHERE artist_FirstName = @artist_FirstName
AND artist_LastName = @artist_LastName
AND artist_band = @artist_band
AND artist_type = @artist_type
end try
begin catch
print error_message()
end catch
end
go