2012-03-15 5 views
0

내 응용 프로그램에서 내 데이터 소스에 레코드를 삽입 한 후 다른 페이지로 리디렉션하려고합니다. 삽입 부분이 제대로 작동하지만 페이지가 결코 리디렉션되지 않습니다. 어떤 아이디어?Asp.net, Response.Redirect가 작동하지 않습니다. 왜?

ASPX

<asp:FormView ID="FormView1" runat="server" DataKeyNames="RecapID" 
    DataSourceID="RecapDataSource" DefaultMode="Insert"> 
     <InsertItemTemplate> 
      Recap Date: 
      <asp:TextBox ID="RecapDateTextBox" runat="server" 
       Text='<%# Bind("RecapDate") %>' Width="80px" /><asp:RequiredFieldValidator runat="server" id="RequiredFieldValidator1" ControlToValidate="RecapDateTextBox" ErrorMessage="*" display="Dynamic" /> 
      <asp:Button ID="InsertButton" runat="server" CausesValidation="True" 
       CommandName="Insert" Text="Create"/> 
     </InsertItemTemplate> 
     </asp:FormView> 
<asp:SqlDataSource ID="RecapDataSource" runat="server" 
    ConflictDetection="CompareAllValues" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    InsertCommand="INSERT INTO [ftsrms_Recap] ([RecapDate]) VALUES (@RecapDate) SELECT @NewRecapID = SCOPE_IDENTITY()" 
    OldValuesParameterFormatString="original_{0}"> 
    <InsertParameters> 
     <asp:Parameter DbType="Date" Name="RecapDate" /> 
     <asp:Parameter Direction="Output" Name="NewRecapID" Type="Int32" /> 
    </InsertParameters> 
</asp:SqlDataSource> 

ASPX.VB 당신은 에 RecapDataSource 이벤트 핸들러를 추가 할 필요가

Protected Sub RecapDataSource_Inserted(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) 

    'Read the value of the @NewProductID OUTPUT parameter 
    Dim newRecapID As Integer = Convert.ToInt32(e.Command.Parameters("@NewRecapID").Value) 

    Response.Redirect("Profile.aspx?") 

End Sub 
+0

RecapDataSource_Inserted가 Inserted 이벤트를 처리합니까? –

+0

그 줄에 중단 점을 놓고 실제로 맞았는지 확인할 수 있습니다. 그렇지 않은 경우 문제는 다른 곳에서 발생합니다. – Koen

답변

0

:

oninserted = "여기에 내 현재 코드는 RecapDataSour ce_Inserted "

그래서 귀하의 영문 코드가된다 :

<asp:FormView ID="FormView1" runat="server" DataKeyNames="RecapID" 
    DataSourceID="RecapDataSource" DefaultMode="Insert"> 
     <InsertItemTemplate> 
      Recap Date: 
      <asp:TextBox ID="RecapDateTextBox" runat="server" 
       Text='<%# Bind("RecapDate") %>' Width="80px" /><asp:RequiredFieldValidator runat="server" id="RequiredFieldValidator1" ControlToValidate="RecapDateTextBox" ErrorMessage="*" display="Dynamic" /> 
      <asp:Button ID="InsertButton" runat="server" CausesValidation="True" 
       CommandName="Insert" Text="Create"/> 
     </InsertItemTemplate> 
     </asp:FormView> 
<asp:SqlDataSource ID="RecapDataSource" runat="server" 
    oninserted="RecapDataSource_Inserted" 
    ConflictDetection="CompareAllValues" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    InsertCommand="INSERT INTO [ftsrms_Recap] ([RecapDate]) VALUES (@RecapDate) SELECT @NewRecapID = SCOPE_IDENTITY()" 
    OldValuesParameterFormatString="original_{0}"> 
    <InsertParameters> 
     <asp:Parameter DbType="Date" Name="RecapDate" /> 
     <asp:Parameter Direction="Output" Name="NewRecapID" Type="Int32" /> 
    </InsertParameters> 
</asp:SqlDataSource> 

편집 : 여기에

Protected Sub RecapDataSource_Inserted(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) 

    'Read the value of the @NewProductID OUTPUT parameter 
    Dim newRecapID As Integer = Convert.ToInt32(e.Command.Parameters("@NewRecapID").Value) 

    Response.Redirect("Profile.aspx?") 

End Sub 

:

는 또한이 변경

Protected Sub RecapDataSource_Inserted(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) 

    'Read the value of the @NewProductID OUTPUT parameter 
    Dim newRecapID As Integer = Convert.ToInt32(e.Command.Parameters("@NewRecapID").Value) 

    Response.Redirect("Profile.aspx?") 

End Sub 
0 그것은 아직도 작품이 선 (또는 주석)을 제거하고 다시 시도를 않는 경우

:

Dim newRecapID As Integer = Convert.ToInt32(e.Command.Parameters("@NewRecapID").Value) 

는 예외가 상승 할 수 있음.

+0

Vano 제안을 시도했지만 디버거에서 다음 오류가 발생했습니다. 오류 메서드 '대리자와 호환되는 서명이'Protected Sub RecapDataSource_Inserted (보낸 사람 개체, 전자 보낸 사람 System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) 대리인 Sub SqlDataSourceStatusEventHandler (보낸 사람 개체, e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) '. – sevenyearsrust

+0

위의 작업 중 아무 것도 수행하지 못했습니다. Dim newRecapID As Integer = Convert.ToInt32 (e.Command.Parameters ("@ NewRecapID"). Value). – sevenyearsrust

+0

위의 코드를 사용하면 System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs와 함께 코드를 사용하여 ASPX에서 oninserted = "RecapDataSource_Inserted"로 다시 저장하고 다시 컴파일하면 제대로 작동합니다. 무리 감사! – sevenyearsrust

관련 문제