2013-07-22 36 views
1

我试图使用Gridview来显示来自Object数据源的数据表。它给我的错误:ObjectDataSource找不到具有参数的非泛型方法:

ObjectDataSource 'odsStores' could not find a non-generic method 'ProcessDelete' that has parameters: ProcessID. 

我已经读了很多其他的答案约匹配的情况下,匹配格式,变量这个问题,但我想我已经正确地完成所有这些。这里的aspx页面:

   <asp:GridView ID="gridStores" runat="server" AllowSorting="False" AutoGenerateColumns="False" 
        CssClass="grid-main" DataSourceID="odsStores" EnableViewState="False" OnDataBound="gridStores_DataBound" 
        OnRowDataBound="gridStores_RowDataBound"> 
        <Columns> 
         <asp:TemplateField ShowHeader="False"> 
          <ItemTemplate> 
           <asp:Image ID="imgModel" runat="server" AlternateText="Click to See Details" CssClass="img-details" 
            EnableViewState="False" ImageUrl="~/img/detail.gif" /> 
          </ItemTemplate> 
          <ItemStyle CssClass="grid-main-detail" /> 
         </asp:TemplateField> 
         <asp:BoundField DataField="ProcessID" HeaderText="ProcessID" /> 
         <asp:BoundField DataField="ProcessName" HeaderText="Process Name" ReadOnly="False" /> 
         <asp:BoundField DataField="ProcessDescription" HeaderText="Process Description" ReadOnly="False" /> 
         <asp:BoundField DataField="UpdateUserID" HeaderText="Last Updated By" ReadOnly="True" /> 
         <asp:BoundField DataField="UpdateTimestamp" HeaderText="Last Updated" ReadOnly="True" /> 
         <asp:CommandField ShowEditButton="True" /> 
         <asp:CommandField ShowDeleteButton="True" /> 
        </Columns> 
       </asp:GridView> 

下面的代码背后,我只有一个破发点,并嗟它。

<DataObjectMethod(DataObjectMethodType.Delete)> _ 
Private Sub ProcessDelete(ByVal ProcessID As String) 
    Dim x As Integer = 0 
    x = x + 1 
End Sub 

这里的对象数据源:

<asp:ObjectDataSource ID="odsStores" runat="server" EnableViewState="False" OldValuesParameterFormatString="original_{0}" 
        SelectCountMethod="GetRowCount" SelectMethod="GetData" TypeName="DataWarehouseUserInterface.ProcessBSL" 
        UpdateMethod="ProcessUpdate" DeleteMethod="ProcessDelete" > 
        <UpdateParameters> 
         <asp:FormParameter Name="ProcessName" Type="String" FormField="ProcessName" /> 
         <asp:FormParameter Name="ProcessDescription" Type="String" FormField="ProcessDescription" /> 
        </UpdateParameters> 
        <DeleteParameters> 
         <asp:FormParameter Name="ProcessID" Type="String"/> 
        </DeleteParameters> 
       </asp:ObjectDataSource> 
+0

你可以发布'

+0

@KarlAnderson,补充说,对不起,我最初没有发布。 – gbam

+2

我有点在黑暗中拍摄,但我在MSDN上看到这个,注意到'ObjectDataSource'控件上的'typename'属性:typename =“Samples.AspNet.CS.EmployeeLogic”。你是否忽略了'typename'出于任何原因,如果是这样,当你省略typename这里是数据源寻找方法的默认位置? –

回答

7

我的对象数据源在我的ProcessBSL中查找一个名为ProcessDelete的方法,并带有相应的签名。我在ProcessBSL文件后面的代码中编写了我的方法。

这是代码,影响它的行:

TypeName="DataWarehouseUserInterface.ProcessBSL" 

摘要: 如果它抛出这个错误给你,确保您的方法签名是正确的。确保BSL层是正确的。确保你有 - - 这也阻止了我的工作。希望这可以帮助别人。

干杯。

+0

回答你自己的问题真棒。 –

+0

TypeName参数非常具有误导性。我将它设置为IEnumerable中的对象类型。感谢您清理它gbam! –

0

尝试使该方法公开,看看是否能工作。

+0

同样的错误。它也在更新时发生错误。我只是假设发布删除对于最初的混淆而言很容易。 – gbam

相关问题