Как работает запрос на обновление набора данных? - PullRequest
0 голосов
/ 23 апреля 2009

У меня есть набор данных, который указывает на представление в моей базе данных SQL, и представление сетки, которое использует этот набор данных для заполнения себя. Я, конечно, хочу, чтобы строки редактировались, поэтому я добавил функциональность Edit и Delete в gridview - стандартный метод (не настраиваемые кнопки)

работа с запросом на обновление сейчас ... По какой-то причине он не сгенерировал оператор обновления автоматически (вероятно, набор данных указывает на представление, а не на таблицу, которую я предполагаю), поэтому я должен создать его сам , Нет проблем - я выбираю набор данных, выбираю свойства и выбираю UpdateQuery.

Вот мой запрос:

UPDATE dbo.tblHardware SET TypeID = @TypeID, Name = @Name, Description = @Description, Cost = @Cost, Weight = @Weight, Image = @Image WHERE (HardwareID = @HardwareID)

Источник параметра установлен на «Форма», и у меня есть имя каждого параметра в списке.

Вот соответствующий код со страницы aspx:

        <asp:SqlDataSource ID="dsHardware" runat="server"
        ConnectionString="<%$ ConnectionStrings:RequestFormsConnectionString %>"
        OldValuesParameterFormatString="original_{0}" 
        SelectCommand="SELECT * FROM [vHardware]" 
        UpdateCommand="UPDATE dbo.tblHardware SET TypeID = @TypeID, Name = @Name, Description = @Description, Cost = @Cost, Weight = @Weight, Image = @Image WHERE (HardwareID = @HardwareID)" 
        InsertCommand="INSERT INTO [vHardware] ([HardwareID], [TypeID], [Description], [Name], [Cost], [Weight], [Image], [TypeDesc], [TypeName], [TypeTypeID]) VALUES (@HardwareID, @TypeID, @Description, @Name, @Cost, @Weight, @Image, @TypeDesc, @TypeName, @TypeTypeID)" 
        DeleteCommand="DELETE From tblHardware WHERE HardwareID = @HardwareID">
        <UpdateParameters>
            <asp:FormParameter FormField="TypeID" Name="TypeID" />
            <asp:FormParameter FormField="Name" Name="Name" />
            <asp:FormParameter FormField="Description" Name="Description" />
            <asp:FormParameter FormField="Cost" Name="Cost" />
            <asp:FormParameter FormField="Weight" Name="Weight" />
            <asp:FormParameter FormField="Image" Name="Image" />
            <asp:FormParameter FormField="HardwareID" Name="HardwareID" />
        </UpdateParameters>
        <asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
        AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" DataKeyNames="HardwareID,TypeTypeID"
        DataSourceID="dsHardware">
        <Columns>
            <asp:BoundField DataField="HardwareID" HeaderText="HardwareID" InsertVisible="False"
                ReadOnly="True" SortExpression="HardwareID" />
            <asp:BoundField DataField="TypeID" HeaderText="TypeID" SortExpression="TypeID" />
            <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="Cost" HeaderText="Cost" SortExpression="Cost" />
            <asp:BoundField DataField="Weight" HeaderText="Weight" SortExpression="Weight" />
            <asp:BoundField DataField="Image" HeaderText="Image" SortExpression="Image" />
            <asp:BoundField DataField="TypeDesc" HeaderText="TypeDesc" SortExpression="TypeDesc" />
            <asp:BoundField DataField="TypeName" HeaderText="TypeName" SortExpression="TypeName" />
            <asp:BoundField DataField="TypeTypeID" HeaderText="TypeTypeID" InsertVisible="False"
                ReadOnly="True" SortExpression="TypeTypeID" />
        </Columns>
    </asp:GridView>

Так как это все должно работать? Извинения Я новичок в ASP.NET - предыдущий классический разработчик ASP.

РЕДАКТИРОВАТЬ: Извините, я должен быть более ясным. При попытке обновления я получаю сообщение об ошибке "@Hardware needs to be defined". Не уверен, почему, поскольку это выглядит достаточно определенным для меня. Кроме того, в моем файле .cs НЕТ кода - я предполагаю, что мне что-то там нужно, но не уверен, что именно.

Ответы [ 3 ]

0 голосов
/ 23 апреля 2009

Приведенный выше код не закрывает asp: SQLDataSource?

Или это было просто вырезано в копировальной пасте?

0 голосов
/ 24 апреля 2009

Хорошо, я предполагаю, что некоторые ошибочные записи (которые я понятия не имею, что они делают) каким-то образом вошли в мой код. А именно эта строка:

OldValuesParameterFormatString="original_{0}"

... заново сделал сетку для использования стандартных методов. Работает как шарм!

Если кто-то читает это, как я могу проверить данные?

0 голосов
/ 23 апреля 2009

Просто дикая догадка, может быть, я делаю это неправильно, но она РАБОТАЕТ - попробуйте связать параметр HardwareID с gridView?

<asp:ControlParameter> should help you out.

<asp:ControlParameter ControlID="GridView1" Name="HardwareID" 

                        PropertyName="SelectedValue" Type="Int32" />

Kindof.

Возможно, можно пожаловаться на что-то еще.

[править] О, это должно войти в ваши "UpdateParameters" и "DeleteParameters".

[Редактировать, еще раз] Вам понадобится код в ваших .cs, только если вы планируете проверять данные.

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