小弟在写一个商品查询,用的是AspNetPager分页控件。但是查询不到结果,提示是“并非所有的代码路径都返回值”
Web层:
 keyword是从首页的一个textbox 里面取出的:
string str = txtSearch.Text.Trim();
Response.Redirect("Search.aspx?keyword=" + str);
然后查询页面:
 protected void getSearchList()
    {
        str = Request.QueryString["keyword"];
        DataList1.DataSource = goodsInfoManage.getKeyword(AspNetPager1.CurrentPageIndex, AspNetPager1.PageSize, str);
              DataList1.DataBind();    }
DAL层:
public List<GoodsInfo> getKeyword(int pageIndex, int pageSize, string keyword)
        {
            SqlParameter[] sqlParameters = {
                new SqlParameter("@pageIndex",SqlDbType.Int),
                new SqlParameter("@pageSize",SqlDbType.Int),
                new SqlParameter("@Keyword",SqlDbType.VarChar)
            };
            sqlParameters[0].Value = pageIndex;
            sqlParameters[1].Value = pageSize;
            sqlParameters[2].Value = keyword;
            List<GoodsInfo> list = new List<GoodsInfo>();
            SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.StoredProcedure, "User_Search", sqlParameters);
            while (reader.Read())
            {
                GoodsInfo gi = new GoodsInfo();
                gi.GoodsID = int.Parse(reader["GoodsID"].ToString());
                gi.GoodsName = reader["GoodsName"].ToString();
                gi.MarketPrice = decimal.Parse(reader["MarketPrice"].ToString());
                gi.MemberPrice = decimal.Parse(reader["MemberPrice"].ToString());
                gi.GoodsPic_s = reader["GoodsPic_s"].ToString();
                gi.GoodsSDesc = reader["GoodsSDesc"].ToString();
                gi.Keyword = reader["Keyword"].ToString();
                list.Add(gi);
            }
            reader.Dispose();
            return list;
        }
存储过程:
CREATE procedure User_Search 
(@pagesize int,
@pageindex int,
@Keyword varchar(60))
as
set nocount on
begin
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select GoodsID from tb_GoodsInfo  where GoodsName like '%@keyword%' or Keyword like '%@keyword%' order by GoodsID desc
select O.GoodsID,O.GoodsName,O.MarketPrice,O.MemberPrice,O.GoodsPic_s,O.GoodsSDesc,O.Keyword from tb_GoodsInfo O,@indextable t where O.GoodsID=t.nid
and t.id between @PageLowerBound+1 and @PageUpperBound and O.GoodsName like '%@keyword%' or O.Keyword like '%@keyword%' order by t.id
end
set nocount off
GO存储过程什么的应该没问题,估计是那个keyword造成的,但是我有不知道怎么改,请各位高手帮忙指点下。

解决方案 »

  1.   

    public List <GoodsInfo> getKeyword(int pageIndex, int pageSize, string keyword) 
            { 
                List <GoodsInfo> list = new List <GoodsInfo>(); 
    ........................
                while (reader.Read()) 
                { 
    ......................
                } 
                reader.close(); 
                return list; 
            } 
      

  2.   

    “并非所有的代码路径都返回值” 
    在那提示的,你检查你的方法在任何状态下都会return 我想应该是在你的DAL层报的错误
      

  3.   

    是的,直接运行不报错,但是没又输出结果,在DAL层那边加个try..catch就提示“并非所有的代码路径都返回值”
      

  4.   

    DAL 代码写得那么整齐,居然不会解决,COPY 来的?