2012-03-15 71 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

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事件嗎? – 2012-03-15 06:05:48

+0

您可以在該行上放置一個斷點並查看它是否實際上被擊中。否則,問題在別處。 – Koen 2012-03-15 06:14:35

回答

0

您需要將事件處理程序添加到RecapDataSource

oninserted =」 RecapDataSour ce_Inserted」

所以,你的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" 
    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 

如果仍然不工作,刪除此行(或意見),然後再試一次:

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

可能它上升例外。

+0

嘗試了您的建議Vano,但調試器拋出以下錯誤:錯誤方法受保護的子RecapDataSource_Inserted(sender As Object,e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs)'沒有與委託'委託Sub SqlDataSourceStatusEventHandler(sender As Object,e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)''。 – sevenyearsrust 2012-03-15 06:27:43

+0

以上都沒有工作,甚至評論該行:Dim newRecapID As Integer = Convert.ToInt32(e.Command.Parameters(「@ NewRecapID」)。Value)。 – sevenyearsrust 2012-03-15 06:42:13

+0

刮開上面的代碼,我使用System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs後面的代碼重新編譯並重新編譯,並在ASPX中使用oninserted =「RecapDataSource_Inserted」,它工作正常。謝謝一堆! – sevenyearsrust 2012-03-15 06:52:36

相關問題