直接SQLクエリではなくオブジェクトのリストにバインドされたGridViewを使用しています。これが動作している場合の人口は更新されています。私は手動でこのgridviewのための挿入を生成しており、これも同様に動作しています。 gridviewからdeleteコマンドを実行しようとすると、正しいメソッドが呼び出されていますが、パラメータが入力されていません。これに必要な唯一のパラメータは@IDですが、他の投稿を読むと、一般的な修正はすべてのパラメータを追加することですが、それでも役に立たなくなります。メソッドを呼び出すオブジェクトにバインドされたGridViewからの削除
<asp:GridView ID="GridViewBands" runat="server" AutoGenerateColumns="False" DataSourceID="BandsDataSource" CellPadding="4" ForeColor="#333333" GridLines="None" ShowFooter="True" Width="1375px">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:TemplateField HeaderText="AgencyID" SortExpression="AgencyID">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Width="80px" Text='<%# Bind("AgencyID") %>' ReadOnly ="true"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="TextBox1" runat="server" ErrorMessage="there is an error?" Text="*`"></asp:RequiredFieldValidator>
</EditItemTemplate>
<FooterTemplate>
<asp:Button ID="Button1" runat="server" CommandName="Insert" Text="Add New Line" />
<asp:TextBox ID="newAgencyID" runat="server" Width="80px"></asp:TextBox>
<br />
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("AgencyID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="TypeID" SortExpression="TypeID">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Width="80px" Text='<%# Bind("TypeID") %>' ReadOnly ="true"></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newTypeID" runat="server" Width="80px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Width="80px" Text='<%# Bind("TypeID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="CompanyID" SortExpression="CompanyID">
<EditItemTemplate>
<asp:TextBox ID="TextBox3" runat="server" Width="80px" Text='<%# Bind("CompanyID") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newCompanyID" runat="server" Width="80px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("CompanyID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Office" SortExpression="Office">
<EditItemTemplate>
<asp:TextBox ID="TextBox4" runat="server" Width="80px" Text='<%# Bind("Office") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newOffice" runat="server" Width="80px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("Office") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="SequenceID" SortExpression="SequenceID" >
<EditItemTemplate>
<asp:TextBox ID="TextBox5" runat="server" Width="80px" Text='<%# Bind("SequenceID") %>' ReadOnly ="true"></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newSequenceID" runat="server" Width="80px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Bind("SequenceID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Minimmum" SortExpression="Minimmum">
<EditItemTemplate>
<asp:TextBox ID="TextBox6" runat="server" Width="80px" Text='<%# Bind("Minimmum") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newMinimum" runat="server" Width="80px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label6" runat="server" Text='<%# Bind("Minimmum") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Capped" SortExpression="Capped">
<EditItemTemplate>
<asp:TextBox ID="TextBox7" runat="server" Width="80px" Text='<%# Bind("Capped") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newCapped" runat="server" Width="80px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label7" runat="server" Text='<%# Bind("Capped") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="fixed" SortExpression="fixed">
<EditItemTemplate>
<asp:TextBox ID="TextBox8" runat="server" Width="80px" Text='<%# Bind("fixed") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newFixed" runat="server" Width="80px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label8" runat="server" Text='<%# Bind("fixed") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Flat" SortExpression="Flat">
<EditItemTemplate>
<asp:TextBox ID="TextBox9" runat="server" Width="80px" Text='<%# Bind("Flat") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newFlat" runat="server" Width="80px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label9" runat="server" Text='<%# Bind("Flat") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="SequenceLimit" SortExpression="SequenceLimit">
<EditItemTemplate>
<asp:TextBox ID="TextBox10" runat="server" Width="80px" Text='<%# Bind("SequenceLimit") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newSequenceLimit" runat="server" Width="80px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label10" runat="server" Text='<%# Bind("SequenceLimit") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Rate" SortExpression="Rate">
<EditItemTemplate>
<asp:TextBox ID="TextBox11" runat="server" Width="80px" Text='<%# Bind("Rate") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newRate" runat="server" Width="80px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label11" runat="server" Text='<%# Bind("Rate") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ActiveFrom" SortExpression="ActiveFrom">
<EditItemTemplate>
<asp:TextBox ID="txtActiveFrom" runat="server" Width="200px" Text='<%# Bind("ActiveFrom") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newActiveFrom" runat="server" Width="200px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="lblActiveFrom" runat="server" Text='<%# Bind("ActiveFrom") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ActiveTo" SortExpression="ActiveTo">
<EditItemTemplate>
<asp:TextBox ID="txtActiveTo" runat="server" Width="200px" Text='<%# Bind("ActiveTo") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newActiveTo" runat="server" Width="200px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="lblActiveTo" runat="server" Text='<%# Bind("ActiveTo") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ID" SortExpression="ID">
<EditItemTemplate>
<asp:TextBox ID="txtID" runat="server" Width="80px" Text='<%# Bind("ID") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<SortedAscendingCellStyle BackColor="#FDF5AC" />
<SortedAscendingHeaderStyle BackColor="#4D0000" />
<SortedDescendingCellStyle BackColor="#FCF6C0" />
<SortedDescendingHeaderStyle BackColor="#820000" />
</asp:GridView>
データソースは次のとおりですが、他の作業方法もあります。これは、いずれのパラメータにも値を設定しないdeleteメソッドです。
<asp:ObjectDataSource ID="BandsDataSource" runat="server" SelectMethod="SelectBands" TypeName="App_Code.Billing+BillingBand" UpdateMethod="UpdateBands" DeleteMethod="RemoveBand" InsertMethod="AddNewBand">
<SelectParameters>
<asp:Parameter Name ="AgencyID" Type ="Int64" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="AgencyID" Type="Object" />
<asp:Parameter Name="TypeID" Type="Object" />
<asp:Parameter Name="CompanyID" Type="Object" />
<asp:Parameter Name="Office" Type="Object" />
<asp:Parameter Name="SequenceID" Type="Object" />
<asp:Parameter Name="Minimmum" Type="Object" />
<asp:Parameter Name="Capped" Type="Object" />
<asp:Parameter Name="fixed" Type="Object" />
<asp:Parameter Name="Flat" Type="Object" />
<asp:Parameter Name="SequenceLimit" Type="Object" />
<asp:Parameter Name="Rate" Type="Object" />
<asp:Parameter Name="ActiveFrom" Type="Object" />
<asp:Parameter Name="ActiveTo" Type="Object" />
<asp:Parameter Name="ID" Type="Object" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="AgencyID" Type="Object" />
<asp:Parameter Name="TypeID" Type="Object" />
<asp:Parameter Name="CompanyID" Type="Object" />
<asp:Parameter Name="Office" Type="Object" />
<asp:Parameter Name="SequenceID" Type="Object" />
<asp:Parameter Name="Minimmum" Type="Object" />
<asp:Parameter Name="Capped" Type="Object" />
<asp:Parameter Name="fixed" Type="Object" />
<asp:Parameter Name="Flat" Type="Object" />
<asp:Parameter Name="SequenceLimit" Type="Object" />
<asp:Parameter Name="Rate" Type="Object" />
<asp:Parameter Name="ActiveFrom" Type="Object" />
<asp:Parameter Name="ActiveTo" Type="Object" />
<asp:Parameter Name="ID" Type="Object" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="AgencyID" Type="Object"/>
<asp:Parameter Name="TypeID" Type="Object" />
<asp:Parameter Name="CompanyID" Type="Object" />
<asp:Parameter Name="Office" Type="Object" />
<asp:Parameter Name="SequenceID" Type="Object" />
<asp:Parameter Name="Minimmum" Type="Object" />
<asp:Parameter Name="Capped" Type="Object" />
<asp:Parameter Name="fixed" Type="Object" />
<asp:Parameter Name="Flat" Type="Object" />
<asp:Parameter Name="SequenceLimit" Type="Object" />
<asp:Parameter Name="Rate" Type="Object" />
<asp:Parameter Name="ActiveFrom" Type="Object" />
<asp:Parameter Name="ActiveTo" Type="Object" />
<asp:Parameter Name="ID" Type="Object" />
</UpdateParameters>
</asp:ObjectDataSource>
私は、しかし、私は削除のための「選択」行に基づいてパラメータを移入する方法を見つけることができていない、手動で以下に類似している使用してパラメータを設定するために試してみました。
Protected Sub BandsDataSource_Deleting(sender As Object, e As ObjectDataSourceMethodEventArgs) Handles BandsDataSource.Deleting
e.InputParameters("ID") = GridViewBands.SelectedRow.ID.ToString()
End Sub
しかし、これはNULL参照例外を返しています。
これは削除メソッドです。たとえば、updateメソッドとaddメソッドは同じ形式であり、正しく動作しています。
Public Sub RemoveBand(AgencyID, TypeID, CompanyID, Office, SequenceID, Minimmum, Capped, fixed, Flat, SequenceLimit, Rate, ActiveFrom, ActiveTo, ID)
Using lCon As SqlConnection = Database.DBConnection
Dim lSqlText As String = "update billing_bands set active_to = getdate() where id = @id"
Dim lSqlCmd As New SqlCommand(lSqlText, lCon)
With lSqlCmd.Parameters
.AddWithValue("@id", ID)
End With
lSqlCmd.ExecuteNonQuery()
End Using
End Sub