Zkopírování řádku z jedné tabulky do druhé   zodpovězená otázka

ASP.NET WebForms

Zdravím,

koukal jsem že toto téma už se tu řešilo a dokonce v článcích o ASP.NET je "podobný příklad", ovšem ani po přečtení toho všeho nedokáži převést problematiku na svůj projekt...

Potřeboval bych zkopírovat řádek z jedné tabulky GridView1(databáze1) do druhé tabulky GridView2(databáze2) po stisknutí tlačítka Button v příslušném řádku první tabulky. Tabulky jsou totožné.

Kdyby to bylo možné uvítal bych nějaký konkrétní kód se vším všudy, který by prezentoval jednoduchý příklad kopírování.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Potíž komponenty GridView je v tom, že v ní nejde moc dobře manipulovat s řádky. Záleží, odkud se data do tabulek berou. Je to z databáze, z kolekce objektů? Uveďte kód, kterým tabulky plníte.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tady je tabulka pro vstup

<table border="5" cellpadding="2" cellspacing="0" 
    style="border: 1px solid #0000FF; width: 400px; border-collapse: collapse;" 
        align="center">
    <tr>
        <td bgcolor="Blue" colspan="2" style="color: #FFFFFF; font-weight: bold">
            Přidání řidiče</td>
    </tr>
    <tr>
        <td align="right" width="100">
            Jméno, příjmení</td>
        <td align="left" style="width: 516px">
            <asp:TextBox ID="iNewName" runat="server" Width="300px"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td align="right">
            Osobní číslo</td>
        <td align="left" style="width: 516px">
            <asp:TextBox ID="iNewPersonalNumber" runat="server" Width="150px"></asp:TextBox>
        </td>
    </tr>
       <tr>
        <td align="right">
            Volný od</td>
        <td align="left" style="width: 516px">
            <asp:TextBox ID="iNewFreeFrom" runat="server" Width="150px"></asp:TextBox>
        </td>
    </tr>
       <tr>
        <td align="right">
            Volný do</td>
        <td align="left" style="width: 516px">
            <asp:TextBox ID="iNewFreeInto" runat="server" Width="150px"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td align="right" bgcolor="Blue" colspan="2">
            <asp:Button ID="Save" runat="server" Text="Uložit" />
            <asp:Button ID="Cancel" runat="server" Text="Zrušit" />
        </td>
    </tr>
</table>   

Tady SqlSource

    <asp:SqlDataSource ID="DriversP" runat="server" 
        ConnectionString="<%$ ConnectionStrings:intranetConnectionString %>"
        SelectCommand="SELECT [iDriversPId], [iCompanyId], [iClick], [iName], [iPersonalNumber], [iFreeFrom], [iFreeInto], [iComments] FROM [iDriversP] WHERE ([iCompanyId] = @iCompanyId)"
        DeleteCommand="DELETE FROM [iDriversP] WHERE [iDriversPId] = @iDriversPId" 
        InsertCommand="INSERT INTO [iDriversP] ([iCompanyId], [iName], [iPersonalNumber], [iFreeFrom], [iFreeInto]) VALUES (@iCompanyId, @iName, @iPersonalNumber, @iFreeFrom, @iFreeInto)"
        UpdateCommand="UPDATE [iDriversP] SET [iClick] = @iClick,  [iName] = @iName, [iPersonalNumber] = @iPersonalNumber, [iFreeFrom] = @iFreeFrom, [iFreeInto] = @iFreeInto, [iComments] = @iComments WHERE [iDriversPId] = @iDriversPId">
    
        <SelectParameters>
            <asp:ControlParameter ControlID="DropDownList1" Name="iCompanyId" 
                PropertyName="SelectedValue" Type="Int64" />
        </SelectParameters>
        
        <DeleteParameters>
            <asp:Parameter Name="iDriversPId" Type="Int64" />
        </DeleteParameters>
        
        <UpdateParameters>
            <asp:Parameter Name="iClick" Type="String" />
            <asp:Parameter Name="iName" Type="String" />
            <asp:Parameter Name="iPersonalNumber" Type="String" />
            <asp:Parameter Name="iFreeFrom" Type="String" />
            <asp:Parameter Name="iFreeInto" Type="String" />
            <asp:Parameter Name="iComments" Type="String" />
            <asp:Parameter Name="iDriversPId" Type="Int64" />
        </UpdateParameters>
        
        <InsertParameters>
            <asp:ControlParameter ControlID="DropDownList1" Name="iCompanyId" 
                PropertyName="SelectedValue" Type="Int64" />
            <asp:ControlParameter ControlID="iNewName" 
                Name="iName" PropertyName="Text" Type="String" />
            <asp:ControlParameter ControlID="iNewPersonalNumber" 
                Name="iPersonalNumber" PropertyName="Text" Type="String" />
            <asp:ControlParameter ControlID="iNewFreeFrom" 
                Name="iFreeFrom" PropertyName="Text" Type="String" />
          <asp:ControlParameter ControlID="iNewFreeInto" 
                Name="iFreeInto" PropertyName="Text" Type="String" />
        </InsertParameters>
    
    </asp:SqlDataSource>

A tady kod pro tlacitka

    Protected Sub Save_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Save.Click
        DriversP.Insert()
        iNewName.Text = ""
        iNewPersonalNumber.Text = ""
        iNewFreeFrom.Text = ""
        iNewFreeInto.Text = ""
    End Sub

    Protected Sub Cancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Cancel.Click
        iNewName.Text = ""
        iNewPersonalNumber.Text = ""
        iNewFreeFrom.Text = ""
        iNewFreeInto.Text = ""
    End Sub

A tady prvni tabulka

    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" HorizontalAlign="Center" 
    AllowSorting="True" AutoGenerateColumns="False" 
    DataKeyNames="iDriversPId" DataSourceID="DriversP" Width="700px" CssClass="gridview">

        <Columns>         
            <asp:TemplateField HeaderText="" ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                <asp:Button ID="Save1" runat="server" Text="Zapůjčit" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="iName" HeaderText="Jméno, příjmení" 
                SortExpression="iName" />
            <asp:BoundField DataField="iPersonalNumber" HeaderText="osobní číslo" 
                SortExpression="iPersonalNumber" />
            <asp:BoundField DataField="iFreeFrom" HeaderText="volný od" 
                SortExpression="iFreeFrom" />
            <asp:BoundField DataField="iFreeInto" HeaderText="volný do" 
                SortExpression="iFreeInto" />
            <asp:BoundField DataField="iComments" HeaderText="komentář" 
                SortExpression="iComments" />
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
        </Columns>

    </asp:GridView>

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevím, jestli to chápu správně, předpokládám, že máte v databázi 2 tabulky a potřebujete kopírovat záznamy z jedné do druhé. Pokud data taháte z databáze a obě tabulky jsou v databázi, je asi nejjednodušší zkopírovat řádek přímo na úrovni databáze.

Asi nejlepší je prostě napsat proceduru v SQL a pak ji z aplikace jednoduše zavolat:

CREATE PROCEDURE [KopirujRadek] (
  @Id INT
) AS BEGIN
  INSERT INTO [Tabulka1] ([Sl1], [Sl2], [Sl3])
    SELECT [Sl1], [Sl2], [Sl3] FROM [Tabulka2] WHERE [Id] = @Id
END

Z aplikace pak na databázi spusťte příkaz:

  EXECUTE [KopirujRadek] @Id = @IdRadku

,

kde IdRadku je parametr obsahující ID řádku ve zdrojové tabulce, který kopírujete.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky dostatečně mě to nakoplo :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback