2013-07-22 5 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> 

여기 코드가 뒤에 있습니다. 중단 점이 있으며 절대로 안타깝습니다.

<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

내 개체 데이터 원본이 해당 서명이있는 ProcessDelete라는 메서드에 대해 내 ProcessBSL에서 찾고있었습니다. ProcessBSL 파일의 코드에 내 메서드를 작성했습니다.

이 그것을 영향 코드의 줄을이었다

TypeName="DataWarehouseUserInterface.ProcessBSL" 

요약 : 그것은 당신이 오류를 던지고 경우 , 당신의 방법 서명이 올바른지 확인합니다. BSL 계층이 올바른지 확인하십시오. 내 작업을 중단 한 _이 있는지 확인하십시오. 희망이 다른 사람을 도와줍니다.

건배.

+0

자신 만의 질문에 답하는 것은 대단합니다. –

+0

TypeName 매개 변수는 오도 된 것입니다. 내 IEnumerable 내에서 Object 유형으로 설정했습니다. Gbam을 지워 줘서 고마워! –

0

가 작동하는지 확인하기 위해 방법을 공개하고 시도 :

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

여기 오브젝트 데이터 소스입니다.

+0

같은 오류가 발생했습니다. 또한 업데이트시에도 오류가 발생합니다. 방금 초기 혼란에 대해 유감스럽게 생각하는 게시를 게시하는 것이 더 쉬울 것이라고 생각했습니다. – gbam