2010-09-07 93 views
0

我在ListView与DataPager有问题。ASP.NET ListView与DataPager抛出错误后转到下一页

我的SqlDataSource

 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ADSConnectionString %>" 
    SelectCommand="usp_posts_getall" SelectCommandType="StoredProcedure"> 
</asp:SqlDataSource> 

,它是在ListView控件绑定。我将DataPager中的PageSize设置为5,因此在导航到下一页之后。

它抛出一个错误

 
Procedure or function usp_posts_getall has too many arguments specified 

在我usp_posts_getall,我只有1个参数

 
@thisCategoryID int 

出了什么问题?

[SQLEXCEPTION(0x80131904):过程或函数usp_posts_getall已指定的参数太多] System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection)1951450 System.Data.SqlClient.SqlInternalConnection。的OnError(SqlException异常,布尔breakConnection)4849003 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)+194 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand的cmdHandler,SqlDataReader的数据流,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)+2394 System.Data.SqlClient.SqlDataReader.ConsumeMetaData()+33 系统。 Data.SqlClient.SqlDataReader.get_MetaData()+83 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)+297 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔returnStream,布尔异步)+540 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔returnStream, RunBehavior runBehavior,布尔returnStream,String方法)+32 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior行为,String方法)+141 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior行为)+12 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)+10 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset,DataTable [] datatables,Int32 startRecord,Int32 maxRecords,字符串srcTable,IDbCommand命令,CommandBehavior行为)+130 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand命令,CommandBehavior行为)+287 System.Data.Common.DbDataAdapter .fill伪(数据集的数据集,字符串srcTable要)+92 System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments参数)1297 System.Web.UI.DataSourceView.Select(DataSourceSelectArguments参数,DataSourceViewSelectCallback回调)+19 系统.Web.UI.WebControls.Dat aBoundControl.PerformSelect()+142 System.Web.UI.WebControls.ListView.PerformSelect()+57 System.Web.UI.WebControls.BaseDataBoundControl.DataBind()+73 System.Web.UI.WebControls.BaseDataBoundControl。 EnsureDataBound()+82 System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender(EventArgs e)+22 System.Web.UI.Control.PreRenderRecursiveInternal()+80 System.Web.UI.Control。PreRenderRecursiveInternal()+171 System.Web.UI.Control.PreRenderRecursiveInternal()+171 System.Web.UI.Control.PreRenderRecursiveInternal()+171 System.Web.UI.Control.PreRenderRecursiveInternal()+171 系统。 Web.UI.Control.PreRenderRecursiveInternal()+171 System.Web.UI.Control.PreRenderRecursiveInternal()+171 System.Web.UI.Control.PreRenderRecursiveInternal()+171 System.Web.UI.Control.PreRenderRecursiveInternal() )171 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)842

回答

1

OK抱歉,

我忘了清除SelectParameters因为在我的Page_Load,我有这样的代码:

 
     Parameter param = new Parameter(); 
     param.Name = "thisCategoryID"; 
     param.Type = TypeCode.Int32; 
     param.DefaultValue = SelectedCategoryID.ToString(); 

     SqlDataSource1.SelectParameters.Clear(); // <<--- and I forgot this 
     SqlDataSource1.SelectParameters.Add(param); 

它的工作现在