ListView + SqlDataSource - проблема Update
От: Strudel  
Дата: 08.11.12 14:22
Оценка:
Приветствую!

Использую ListView, без изысков, практически взято из мсдн. "В процессе" прикрутил к нему OnItemUpdated и OnItemUpdating, но не суть.
            <asp:ListView ID="ListView2" runat="server" DataSourceID="SqlInventory" DataKeyNames="InventoryUUID"
                OnItemUpdated="ListView2_ItemUpdated" OnItemUpdating="ListView2_ItemUpdating">
                <LayoutTemplate>
                    <table runat="server" id="table1">
                        <tr>
                            <th>InvetoryUUID</th>
                            <th>Name</th>
                        </tr>
                        <tr runat="server" id="itemPlaceholder">
                        </tr>
                    </table>
                </LayoutTemplate>
                <ItemTemplate>
                    <tr id="Tr1" runat="server">
                        <td id="Td1" runat="server">
                            <asp:Label ID="LabelInventoryUUID_it" runat="server" Text='<%#Eval("InventoryUUID") %>' />
                        </td>
                        <td id="Td3" runat="server">
                            <asp:Label ID="LabelName_it" runat="server" Text='<%#Eval("Name") %>' />
                        </td>
                        <td>
                            <asp:LinkButton runat="server" ID="EditButton" Text="Edit" CommandName="Edit" />
                        </td>
                    </tr>
                </ItemTemplate>
                <EditItemTemplate>
                    <tr id="Tr1" runat="server" style="background-color: Yellow">
                        <td id="Td1" runat="server">
                            <asp:TextBox ID="LabelInventoryUUID_ed" runat="server" Text='<%#Eval("InventoryUUID") %>' />
                        </td>
                        <td id="Td3" runat="server">
                            <asp:TextBox ID="TextBoxName_ed" runat="server" Text='<%#Bind("Name")%>' />
                        </td>
                        <td>
                            <asp:Button runat="server" ID="UpdateButton" Text="Update" CommandName="Update" />
                            <asp:Button runat="server" ID="CancelButton" Text="Cancel" CommandName="Cancel" />
                        </td>
                    </tr>
                </EditItemTemplate>
            </asp:ListView>


Тут же к нему источник данных. Раздел UpdateParameters прикрутил позже т.к. в мсдн о нем ни слова. Пробовал и <asp:Parameter>

    <asp:SqlDataSource runat="server" ID="SqlInventory\" ConnectionString="<%$ ConnectionStrings:SqlConnectionString %>"
        SelectCommand="SELECT * FROM Inventory"
        UpdateCommand="UPDATE Inventory SET InventoryID = @InventoryID, Name = @Name WHERE (InventoryUUID = @InventoryUUID)">
        <UpdateParameters>
            <asp:ControlParameter Name="InventoryID" Type="String" />
            <asp:ControlParameter Name="Name" Type="String" />
            <asp:ControlParameter Name="InventoryUUID" Type="String" />
        </UpdateParameters>
    </asp:SqlDataSource>


Проблемы при Update — если не определять секцию параметров <UpdateParameters> (как в мсдн и не только) , то получаю System.Data.SqlClient.SqlException: Must declare the scalar variable и имя параметра из запроса Update. Если же секция параметров определена, видно что ни <%#Bind("InventoryUUID")%> ни <%#Bind("Name")%> неработают, в обработчиках OnItemUpdat* видно, что значения параметров отсутствуют.

Как заставить работать сию конструкцию? Спасибо.
Re: ListView + SqlDataSource - проблема Update
От: BorisLee  
Дата: 12.11.12 04:53
Оценка:
Здравствуйте, Strudel, Вы писали:

Заменить ControlParameter на просто Parameter в списке параметров Update. И, наверное, лучше пользоваться вначале мастерами студии, чтобы не биться в рукопашную.

S>Приветствую!


S>Использую ListView, без изысков, практически взято из мсдн. "В процессе" прикрутил к нему OnItemUpdated и OnItemUpdating, но не суть.

S>
S>            <asp:ListView ID="ListView2" runat="server" DataSourceID="SqlInventory" DataKeyNames="InventoryUUID"
S>                OnItemUpdated="ListView2_ItemUpdated" OnItemUpdating="ListView2_ItemUpdating">
S>                <LayoutTemplate>
S>                    <table runat="server" id="table1">
S>                        <tr>
S>                            <th>InvetoryUUID</th>
S>                            <th>Name</th>
S>                        </tr>
S>                        <tr runat="server" id="itemPlaceholder">
S>                        </tr>
S>                    </table>
S>                </LayoutTemplate>
S>                <ItemTemplate>
S>                    <tr id="Tr1" runat="server">
S>                        <td id="Td1" runat="server">
S>                            <asp:Label ID="LabelInventoryUUID_it" runat="server" Text='<%#Eval("InventoryUUID") %>' />
S>                        </td>
S>                        <td id="Td3" runat="server">
S>                            <asp:Label ID="LabelName_it" runat="server" Text='<%#Eval("Name") %>' />
S>                        </td>
S>                        <td>
S>                            <asp:LinkButton runat="server" ID="EditButton" Text="Edit" CommandName="Edit" />
S>                        </td>
S>                    </tr>
S>                </ItemTemplate>
S>                <EditItemTemplate>
S>                    <tr id="Tr1" runat="server" style="background-color: Yellow">
S>                        <td id="Td1" runat="server">
S>                            <asp:TextBox ID="LabelInventoryUUID_ed" runat="server" Text='<%#Eval("InventoryUUID") %>' />
S>                        </td>
S>                        <td id="Td3" runat="server">
S>                            <asp:TextBox ID="TextBoxName_ed" runat="server" Text='<%#Bind("Name")%>' />
S>                        </td>
S>                        <td>
S>                            <asp:Button runat="server" ID="UpdateButton" Text="Update" CommandName="Update" />
S>                            <asp:Button runat="server" ID="CancelButton" Text="Cancel" CommandName="Cancel" />
S>                        </td>
S>                    </tr>
S>                </EditItemTemplate>
S>            </asp:ListView>
S>


S>Тут же к нему источник данных. Раздел UpdateParameters прикрутил позже т.к. в мсдн о нем ни слова. Пробовал и <asp:Parameter>


S>
S>    <asp:SqlDataSource runat="server" ID="SqlInventory\" ConnectionString="<%$ ConnectionStrings:SqlConnectionString %>"
S>        SelectCommand="SELECT * FROM Inventory"
S>        UpdateCommand="UPDATE Inventory SET InventoryID = @InventoryID, Name = @Name WHERE (InventoryUUID = @InventoryUUID)">
S>        <UpdateParameters>
S>            <asp:ControlParameter Name="InventoryID" Type="String" />
S>            <asp:ControlParameter Name="Name" Type="String" />
S>            <asp:ControlParameter Name="InventoryUUID" Type="String" />
S>        </UpdateParameters>
S>    </asp:SqlDataSource>
S>


S>Проблемы при Update — если не определять секцию параметров <UpdateParameters> (как в мсдн и не только) , то получаю System.Data.SqlClient.SqlException: Must declare the scalar variable и имя параметра из запроса Update. Если же секция параметров определена, видно что ни <%#Bind("InventoryUUID")%> ни <%#Bind("Name")%> неработают, в обработчиках OnItemUpdat* видно, что значения параметров отсутствуют.


S>Как заставить работать сию конструкцию? Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.