No ono tá sql pocedura je OK aj normálne funguje. Ale asi to bude jednoduchšie takto. toto je uložená SQL procedúra DELETE maže záznam v podradenej tabulke UPDATE upraví hodnoty v master tabulke
...
PROCEDURE [dbo].[ZmazOdbPrisl]
-- parameters for the stored procedure here
@PrislusnikId int,
@OdbPrislId int,
@Zmenil nvarchar(50),
@ZmenDna datetime
AS
BEGIN
DELETE FROM [OdbPrislusnika] WHERE [OdbPrislId] = @OdbPrislId
UPDATE Prislusnici SET Zmenil= @Zmenil, ZmenDna=@ZmenDna
WHERE PrislusniciId = @PrislusnikId
END
ktorá je použitá v tomto SQLdatasourse
<moje:RedirectingSqlDataSource ID="sourceOdbornP" runat="server" ConnectionString="<%$ ConnectionStrings:PersonalConnectionString %>"
DeleteCommand="ZmazOdbPrisl" DeleteCommandType="StoredProcedure"
....... >
<DeleteParameters>
<asp:Parameter Name="PrislusnikId" Type="Int32" />
<asp:Parameter Name="OdbPrislId" Type="Int32" />
<asp:Parameter Name="Zmenil" Type="String" />
<asp:Parameter Name="ZmenDna" Type="DateTime" />
</DeleteParameters>
....
</moje:RedirectingSqlDataSource>
Pre jednoduchost som sem dal len sporný delete command. Ostatné ako Select, insert a update sem netreba ani ich parameters lebo funguju OK. A teraz mam gridview
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
DataKeyNames="OdbPrislId" DataSourceID="sourceOdbornP" CellPadding="4" ForeColor="#333333" GridLines="None" Width="930px" onrowdatabound="GridView2_RowDataBound" onrowupdating="GridView2_RowUpdating" >
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<Columns>
...
a ešte funkcie ktoré do parametrov procedúr vložia hodnoty nadradeného ID, meno usera a dátum zmeny
protected void FormView2_ItemInserting(object sender, FormViewInsertEventArgs e)
{
MembershipUser user = Membership.GetUser();
e.Values["PrislusnikId"] = Request.QueryString["Cislo"];
e.Values["ZmenDna"] = DateTime.Now;
e.Values["Zmenil"] = user.UserName;
}
protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
MembershipUser user = Membership.GetUser();
e.NewValues["PrislusnikId"] = Request.QueryString["Cislo"];
e.NewValues["ZmenDna"] = DateTime.Now;
e.NewValues["Zmenil"] = user.UserName;
}
protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
MembershipUser user = Membership.GetUser();
e.Values["PrislusnikId"] = Request.QueryString["Cislo"];
e.Values["ZmenDna"] = DateTime.Now;
e.Values["Zmenil"] = user.UserName;
}
Zatial to funguje normálne dokonca aj sa zmaže z podradenej tabulky záznam. (len sa nezmení v zázname master tabulky meno usera a aktualny čas). A teraz akonáhle do Gridview2 doplním
...
onrowdeleting="GridView2_RowDeleting"
...
aby mi to to do tých parametrov získalo meno usera a aktualny čas tak to zblbne. Ani sa nezaže záznam ani neupdatne master tabulka. Naozas dik Honzo ze zabijaš som mnou čas, ale dufam že sa mi konečne podarilo vysvetliť problém. Ja viem je to tažké ked sa niečo vytrhne z kontextu a potom to má človek pochopiť. Dakujem vopred za pomoc.
|