0

SQL データベースのビューを指すデータセットと、このデータセットを使用してデータを入力するグリッドビューがあります。もちろん、行を編集可能にしたいので、編集および削除機能をグリッドビューに追加しました-標準の方法(カスタムボタンではありません)

現在、更新クエリを使用しています...何らかの理由で、更新ステートメントが自動生成されませんでした (おそらく、データセットがテーブルではなくビューを指している可能性があります)。そのため、自分で作成する必要があります。問題ありません。データセットを選択し、プロパティを選択して、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 ファイルにはコードがありません。そこに何かが必要だと思いますが、正確にはわかりません。

4

3 に答える 3

0

上記のコードは asp:SQLDataSource を閉じませんか?

それともコピペで切り抜いただけ?

于 2009-04-23T18:50:06.127 に答える