C# 为什么ObjectDataSource不发送正确的参数值?

C# 为什么ObjectDataSource不发送正确的参数值?,c#,asp.net,C#,Asp.net,我有一个ObjectDataSource,我试图在其中传递一些参数 GridDataSource.SelectMethod = "GetAllCountries"; GridDataSource.SelectParameters.Add("PageSize", pageSize.ToString()); GridDataSource.SelectParameters.Add("OrderBy", orderBy); GridDataSource.SelectParameters.Add("Sta

我有一个ObjectDataSource,我试图在其中传递一些参数

GridDataSource.SelectMethod = "GetAllCountries";
GridDataSource.SelectParameters.Add("PageSize", pageSize.ToString());
GridDataSource.SelectParameters.Add("OrderBy", orderBy);
GridDataSource.SelectParameters.Add("StartIndex", startIndex.ToString());
我的方法是在App_Code/DAL/CountriesDB.CS中

public  List<Countries> GetAllCountries(int PageSize,string OrderBy,int StartIndex)
{
..........
}
public List GetAllCountries(int PageSize、string OrderBy、int StartIndex)
{
..........
}
当我调试它时,在GetAllCountries方法中PageSize=-1;OrderBy=“”,StartIndex=0已传递…这里发生了什么

thnx提前…

您可以这样尝试:

GridDataSource.SelectMethod = "GetAllCountries";
 Parameter p1 = new Parameter("PageSize",TypeCode.Int32);
 Parameter p2 = new Parameter("OrderBy",TypeCode.String);
 Parameter p3 = new Parameter("StartIndex",TypeCode.Int32);
 GridDataSource.SelectParameters.Add(p1);
 GridDataSource.SelectParameters.Add(p2);
 GridDataSource.SelectParameters.Add(p3);

我通常订阅,在那里我可以在以下位置修改
InputParmeters
集合:

此外,参数值不需要是字符串。它们应该与select方法的参数类型相匹配

必须在代码中指定select方法(就像您在问题中所做的那样):

。。。或在标记中:

<asp:ObjectDataSource ... SelectMethod="GetAllCountries" /> // markup
//标记

处理
GridDataSource
选择事件,并在那里输入参数

protected void GridDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{    
    GridDataSource.SelectMethod = "GetAllCountries";            
    e.InputParameters.Clear();
    e.InputParameters.Add("PageSize", pageSize.ToString());
    e.InputParameters.Add("OrderBy", orderBy);
    e.InputParameters.Add("StartIndex", startIndex.ToString());         
}

我收到以下错误:除非指定了SelectMethod,否则ObjectDataSource“GridDataSource”不支持选择操作。请查看此帖子是否有助于获取错误:除非指定了SelectMethod,否则ObjectDataSource“GridDataSource”不支持选择操作。@Tamalkandey您需要指定它。编辑了我的帖子。如果你能用你尝试过的最新简短但完整的版本()更新这个问题,那会有所帮助。尤其是事件处理程序应该是可见的。
<asp:ObjectDataSource ... SelectMethod="GetAllCountries" /> // markup
protected void GridDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{    
    GridDataSource.SelectMethod = "GetAllCountries";            
    e.InputParameters.Clear();
    e.InputParameters.Add("PageSize", pageSize.ToString());
    e.InputParameters.Add("OrderBy", orderBy);
    e.InputParameters.Add("StartIndex", startIndex.ToString());         
}