Gridview обновил всю таблицу, а не одну строку, и после того, как я дал ей идентификатор, я получаю сообщение об ошибке «Необходимо объявить скалярную переменную« @IDDjelatnik » - PullRequest
0 голосов
/ 29 мая 2020

В коде позади у меня есть только SqlDataSource1.Insert (), который я использую для вставки текста из таблицы вниз в gridview. Я пытаюсь редактировать, но после того, как я редактирую одну строку, она применяется ко всей таблице, но после того, как я добавил идентификатор для команды обновления, я получаю сообщение об ошибке, в котором мне нужно объявить скалярную переменную @IDDjelatnik. Я использую веб-формы

<asp:Content ID="content1" runat="server" ContentPlaceHolderID="content">
<div>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="IDDjelatnik" DataSourceID="SqlDataSource1" CellPadding="4" ForeColor="Black" AllowPaging="True" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellSpacing="2" Width="1105px">
        <Columns>
            <%--<asp:BoundField DataField="ImeTima" HeaderText="ImeTima" SortExpression="ImeTima" />--%>
            <asp:CommandField ShowEditButton="True" />
            <asp:BoundField DataField="ImePrezime" HeaderText="ImePrezime" SortExpression="ImePrezime" />
            <asp:BoundField DataField="TipDjelatnika" HeaderText="TipDjelatnika" SortExpression="TipDjelatnika" />
            <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label Text='<%# Bind("ImeTima") %>' ID="lbImeTima" runat="server" />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:DropDownList ID="DropImeTima" runat="server" DataSourceID="SqlDataSource2" DataTextField="ImeTima" DataValueField="IDTim" SelectedValue='<%# Bind("TimID") %>'>
                    </asp:DropDownList>
                </EditItemTemplate>
            </asp:TemplateField>
        </Columns>
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#CCCCCC" ForeColor="White" HorizontalAlign="Left" />
        <RowStyle BackColor="White" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#808080" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        InsertCommand="INSERT INTO [Djelatnik] ([ImePrezime], [TipDjelatnika], [Email], [TimID]) VALUES (@ImePrezime, @TipDjelatnika, @Email, @TimID)" OldValuesParameterFormatString="original_{0}"
        SelectCommand="select IDDjelatnik,ImePrezime, TipDjelatnika, Email,TimID, Tim.ImeTima as ImeTima from Djelatnik inner join Tim on Tim.IDTim = Djelatnik.TimID"
        UpdateCommand="update Djelatnik set IDDjelatnik = @IDDjelatnik, ImePrezime = @ImePrezime, TipDjelatnika = @TipDjelatnika, Email = @Email,TimID = @TimID">

        <InsertParameters>
            <asp:Parameter Name="IDDjelatnik" Type="Int32"/>
            <asp:ControlParameter Name="ImePrezime" Type="String" ControlID="txtImePrezime" />
            <asp:ControlParameter Name="TipDjelatnika" Type="String" ControlID="txtTipDjelatnika" />
            <asp:ControlParameter Name="Email" Type="String" ControlID="txtEmail" />
            <asp:ControlParameter Name="TimID" Type="Int32" ControlID="txtImeTima" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="IDDjelatnik" Type="int32" />
            <asp:Parameter Name="ImePrezime" Type="String" />
            <asp:Parameter Name="TipDjelatnika" Type="String" />
            <asp:Parameter Name="Email" Type="String" />
            <asp:Parameter Name="TimID" Type="Int32" />   
        </UpdateParameters>
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        SelectCommand="select ImeTima,IDTim from Tim"></asp:SqlDataSource>
</div>

<table CssClass="table table-light">
    <tr>
        <td>
            <asp:Label Text="Ime Prezime: " runat="server"/>
            <asp:TextBox ID="txtImePrezime" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:Label Text="Tip Djelatnika: " runat="server" />
            <asp:TextBox ID="txtTipDjelatnika" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:Label Text="Email: " runat="server" />
            <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:Label Text="Tim: " runat="server" />
            <asp:TextBox runat="server" ID="txtImeTima"></asp:TextBox>
        </td>
        <td>
            <asp:Button Text="Dodaj" ID="btnDodaj" OnClick="btnDodaj_Click" runat="server" CssClass="btn btn-primary" />
        </td>
    </tr>
</table>

1 Ответ

0 голосов
/ 29 мая 2020

В UpdateParameters нужно указать поле вашего id @ IDDjelatnik

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...