Looks like I am not the only person th ever have a problem with this, and I have it working fine on other forms. Any help would be appreciated. Again here select, and delete are ok. I handle the adds with BLL code just the Update is making me crazy. I have included the code for the aspx page and a snippet of the xsd code dealing with the Update.
Error Message:
ObjectDataSource 'ObjectDataSource1' could not find a non-generic method 'Update' that has parameters: CompanyID, FacilityName, Address1, Address2, City, _Region, PostalCode, original_FacilityID, Region.
The aspx page:
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="FacilityList.aspx.vb" Inherits="RMCompany_FacilityList" Title="Untitled Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete" InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="CompanyFacilityListTableAdapters.CompanyFacilityListTableAdapter" UpdateMethod="Update"> <DeleteParameters> <asp:Parameter Name="Original_FacilityID" Type="Int32" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="CompanyID" Type="Int32" /> <asp:Parameter Name="FacilityName" Type="String" /> <asp:Parameter Name="Address1" Type="String" /> <asp:Parameter Name="Address2" Type="String" /> <asp:Parameter Name="City" Type="String" /> <asp:Parameter Name="_Region" Type="String" /> <asp:Parameter Name="PostalCode" Type="String" /> <asp:Parameter Name="Original_FacilityID" Type="Int32" /> </UpdateParameters> <SelectParameters> <asp:QueryStringParameter Name="CompanyID" QueryStringField="CompanyID" Type="Int32" /> </SelectParameters> <InsertParameters> <asp:Parameter Name="CompanyID" Type="Int32" /> <asp:Parameter Name="FacilityName" Type="String" /> <asp:Parameter Name="Address1" Type="String" /> <asp:Parameter Name="Address2" Type="String" /> <asp:Parameter Name="City" Type="String" /> <asp:Parameter Name="_Region" Type="String" /> <asp:Parameter Name="PostalCode" Type="String" /> </InsertParameters> </asp:ObjectDataSource> <br /> <asp:GridView ID="grdCompanyFacility" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="FacilityID" DataSourceID="ObjectDataSource1" ForeColor="#333333" GridLines="None" ShowFooter="True"> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <Columns> <asp:TemplateField ShowHeader="False"> <EditItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkButton> <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton> </EditItemTemplate> <ItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButton> <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete"></asp:LinkButton> </ItemTemplate> <FooterTemplate> <asp:Button Text="Add" OnClick="btnAddFacility_Click" runat="server" CssClass="Datagrid1" ID="btnAddFacility" /> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="FacilityID" InsertVisible="False" SortExpression="FacilityID" Visible="False"> <EditItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Eval("FacilityID") %>'></asp:Label> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("FacilityID") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="CompanyID" SortExpression="CompanyID"> <EditItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("CompanyID") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label2" runat="server" Text='<%# Bind("CompanyID") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Facility" SortExpression="FacilityName"> <EditItemTemplate> <asp:TextBox ID="txtFacilityName" runat="server" Text='<%# Bind("FacilityName") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label4" runat="server" Text='<%# Bind("FacilityName") %>'></asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox ID="txtFacilityNameAdd" runat="server"> </asp:TextBox> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Address 1" SortExpression="Address1"> <EditItemTemplate> <asp:TextBox ID="txtAddress1Edit" runat="server" Text='<%# Bind("Address1") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="txtAddress1" runat="server" Text='<%# Bind("Address1") %>'></asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox ID="txtAddress1Add" runat="server"> </asp:TextBox> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Address 2" SortExpression="Address2"> <EditItemTemplate> <asp:TextBox ID="txtAddress2Edit" runat="server" Text='<%# Bind("Address2") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="lblAddress2" runat="server" Text='<%# Bind("Address2") %>'></asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox ID="txtAddress2Add" runat="server"> </asp:TextBox> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="City" SortExpression="City"> <EditItemTemplate> <asp:TextBox ID="txtCityEdit" runat="server" Text='<%# Bind("City") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="lblCity" runat="server" Text='<%# Bind("City") %>'></asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox ID="txtCityAdd" runat="server"> </asp:TextBox> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Region" SortExpression="Region"> <EditItemTemplate> <asp:TextBox ID="txtRegionEdit" runat="server" Text='<%# Bind("Region") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="lblRegion" runat="server" Text='<%# Bind("Region") %>'></asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox ID="txtRegionAdd" runat="server"> </asp:TextBox> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Postal Code" SortExpression="PostalCode"> <EditItemTemplate> <asp:TextBox ID="txtPostalCode" runat="server" Text='<%# Bind("PostalCode") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="lblPostalCode" runat="server" Text='<%# Bind("PostalCode") %>'></asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox ID="txtPostalCodeAdd" runat="server"> </asp:TextBox> </FooterTemplate> </asp:TemplateField> </Columns> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <EditRowStyle BackColor="#999999" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> </asp:GridView> </asp:Content>
Snippet from the dataset code:
<UpdateCommand> <DbCommand CommandType="Text" ModifiedByUser="False"> <CommandText>UPDATE [tblFacility] SET [CompanyID] = @CompanyID, [FacilityName] = @FacilityName, [Address1] = @Address1, [Address2] = @Address2, [City] = @City, [Region] = @Region, [PostalCode] = @PostalCode WHERE (([FacilityID] = @Original_FacilityID))</CommandText> <Parameters> <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@CompanyID" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="CompanyID" SourceColumnNullMapping="False" SourceVersion="Current"> </Parameter> <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@FacilityName" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="FacilityName" SourceColumnNullMapping="False" SourceVersion="Current"> </Parameter> <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Address1" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Address1" SourceColumnNullMapping="False" SourceVersion="Current"> </Parameter> <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Address2" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Address2" SourceColumnNullMapping="False" SourceVersion="Current"> </Parameter> <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@City" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="City" SourceColumnNullMapping="False" SourceVersion="Current"> </Parameter> <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Region" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Region" SourceColumnNullMapping="False" SourceVersion="Current"> </Parameter> <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@PostalCode" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="PostalCode" SourceColumnNullMapping="False" SourceVersion="Current"> </Parameter> <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@Original_FacilityID" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="FacilityID" SourceColumnNullMapping="False" SourceVersion="Original"> </Parameter> </Parameters> </DbCommand> </UpdateCommand>
![]() |
0 |
![]() |
It is a known issue with work around, try the link below for the solution. Hope this helps.
http://kanthu.blogspot.com/2005/10/objectdatasource.html
Kind regards,
Gift Peddie
![]() |
0 |
![]() |
Thanks Caddre,
I have already written the code to update it through a BLL. What I dont understand it why it works in some other instances, thats really the part that gets my attention.
Larry
![]() |
0 |
![]() |
EDIT
(ObjectDataSource 'ObjectDataSource1' could not find a non-generic method 'Update' that has parameters: CompanyID, FacilityName, Address1, Address2, City, _Region, PostalCode, original_FacilityID, Region. )
That error is not related to BLL, I see table columns that is the reason for the error, there is a miscomunication between objectdatasource and the database. There is a modified version of the control for sale, try the link below for that but his postings did not cover the work around I gave you. Hope this helps.
http://www.manuelabadia.com/blog/PermaLink,guid,eaa3eed8-f997-43c4-8c30-78c2f72d0c86.aspx
Kind regards,
Gift Peddie
![]() |
0 |
![]() |
Thanks again,
I solved the problem and now it works as expected. The problen as it turned was a field named "Region". Notice the underscore in the error message. I removed the offending field from the database, rebuilt the dataset and "POOF" no problem. It may have some special meaning somewhere.
Larry
![]() |
0 |
![]() |
I am glad you have resolved it but the answer to your question is in the first answer you gave me you have done the update in your BLL, well there is no DAL to resolve the update correctly to the database so ObjectDataSource did what it could causing that error so that person selling the extended version may have just added a DAL(data access layer) to it. If you will use it try to keep all your updates for the data layer because updates in SQL are complex and most tools get confused.
Kind regards,
Gift Peddie
![]() |
0 |
![]() |
Hi there,
I had the same problem with a field called Region (Suppliers table from NorthWind). I believe the problem is caused by Region being a keyword (for outlining code) so that when ASP.NET generates code for the DataSet.xsd file it creates a property / pameters called _Region. However, the GridView is unaware of Region being a keyword so it calls the field Region still. The GridView passes a parameter called Region, the TableAdapter expects on called _Region and hence you get an error.
I found a solution to it: rename the Region parameter in the OnUpdating event of the GridView
<code>If e.NewValues.Contains("Region") Then
Dim o As Object = e.NewValues("Region")
e.NewValues.Remove("Region")
e.NewValues.Add("_Region", o)
End If
</code>I blogged more about it http://www.blurty.com/talkread.bml?journal=webgeek&itemid=52196
Darren.
![]() |
0 |
![]() |
This is very weird!
Suddenly, after weeks of progamming and having no problems, right at the presentation of the website...i get this error
ObjectDataSource 'CountriesDataSource' could not find a non-generic method 'GetData' that has parameters: region.
why "region" all the time???
greetz
justanotherguy
![]() |
0 |
![]() |