2011-12-19 2 views
2

Ahoy! 지정된 UpdateMethod 또는GridView/ObjectDataSource 이벤트 디버깅

<asp:ObjectDataSource ID="Things" runat="server" 
    TypeName="BLL.Thing" 
    UpdateMethod="UpdateThing" 
    OnUpdating="Things_Updating" 
    OnUpdated="Things_Updated"> 
    <UpdateParameters> 
     <asp:SessionParameter 
      Name="userContext" 
      SessionField="UserContext" 
      Type="Object" /> 
     <asp:Parameter Name="thing" Type="Object" /> 
    </UpdateParameters> 
</asp:ObjectDataSource> 

명령 이름을 가진하여 ImageButton 컨트롤의 클릭이 = "업데이트"발생하도록 지정된 OnUpdating 이벤트가 발생하지만,하지 :

가 나는 ObjectDataSource를 결합하는 ASP.NET의 GridView 컨트롤을 사용하고 있습니다 OnUpdated 이벤트. 예외가 발생되지

protected void Things_Updating(object sender, ObjectDataSourceMethodEventArgs e) 
{ 
    e.InputParameters["thing"] = _theThing; 
} 

:

<EditItemTemplate> 
    <asp:ImageButton ID="ImageButton_Save" runat="server" 
     CommandName="Update" 
     SkinID="Save" 
     CausesValidation="false" 
     CommandArgument='<%# Eval("Id") %>' /> 
    <asp:ImageButton ID="ImageButton_Cancel" runat="server" 
     CommandName="Cancel" 
     SkinID="Cancel" 
     CausesValidation="false" /> 
</EditItemTemplate> 

파라미터 그래서 같이 OnUpdating 이벤트에 정의 된 입력

. 이 페이지는 단지 EditItemTemplate 컨트롤과 함께 계속 게시됩니다. 나는 장소 전체에 중단 점을 둘 수 있지만, 흔적은 Things_Updating의 끝에서 멈 춥니 다. 디버거에 의해 처리되거나 잡히지 않는 예외가 발생하는 것 같습니다. 후드를 열고 ASP.NET이 수행하는 작업 (또는 수행 실패)을 확인하는 방법이 있습니까?

미리 감사드립니다.

답변

2

BLL.Thing.UpdateThing()이 실행됩니까? 이 문제는 Things.Updating 이후에 발생하며 쉽게 디버깅 할 수 있어야합니다. 또한 예외를 유발하는 것이 있다면 아마도 그럴 것입니다.

편집 : GridView.RowUpdating 대신 ObjectDataSource.Updating에 대한 처리기의 매개 변수를 추가

보십시오. 그것이 내가 보통하는 방법입니다. ObjectDataSource의 이벤트에서 업데이트 매개 변수를 수정하려면 DataSourceView이 필요하다고 생각합니다. (참조 : ObjectDataSource Gridview Insert Fails W/ Empty Values Dictionary를)

protected void gridThings_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    e.NewValues.Add("thing", _theThing); 
} 
진행 바로 거기 중지 될 수있는 일이 마음에 와서
+0

아니요, 흔적이 Things_Updating 후에 신비하게 끝납니다. -/ – Adam

+0

@Adam : 답변이 업데이트되었습니다. – pseudocoder

+0

GridView 클래스에 OnUpdating 이벤트가 있다고 생각하지 않지만 대신 사용할 RowCommand 이벤트가 있습니다. 감사! – Adam

1

2 : 당신은뿐만 아니라 그에게 GridView.RowUpdating 이벤트를 처리 한

  1. , 그리고에 GridViewUpdateEventArgs.Cancel 속성을 설정 참된. 이런 식으로 뭔가 : 당신은 false로 ObjectDataSourceMethodEventArgs.Cancel 속성을 설정하면 ObjectDataSource.Updating 이벤트에서 비슷한 짓을했는지

    protected void myGridView_RowUpdating(Object sender, GridViewUpdateEventArgs e) 
    { 
        e.Cancel = true; 
    } 
    
  2. . 이처럼 :

    private void myObjectDataSource_Updating(object source, ObjectDataSourceMethodEventArgs e) 
    { 
        e.Cancel = true; 
    } 
    

이 중 하나를 당신이 설명하는지 같은 것을 일으키는 원인이되는 업데이트 프로세스를 중단합니다.

+0

고마워, 파트너. 특정 상황에서 e.Cancel을 true로 설정하는 조건부 논리가 있지만 충돌이 없습니다. 이 방법을 포기하고 RowCommand 이벤트에서 내 자신의 메서드를 대신 사용할 것이다. – Adam

+0

@Adam 잘 촬영하십시오! 행운을 빈다 =) – jadarnel27