高分请教 DataList分页 在页面跳转时的问题??
以下是 显示详细查询的页面代码, 其中SQL 语句没有错误,已经在查询分析器运行过
此页面刚调出来时 一切正常显示查询结果,就在 点下一页 改变显示行数 等有关分页的按钮时出错
{
protected System.Web.UI.WebControls.DataList DataList1;
string keyWord;
double low=-1,high=-1;
int type=0;
protected int pageNum = 0;
protected int recNum = 0;
protected int pageRecNum = 0;
protected int curPageNO = 0;
// string aim;
string strSql="";
string str="select Book.id,Book.BookName,BookType.BTypeName as class,Price,Price*Discount as PriceList,image=case when(not Cover is null) then ' <img src=GetCover.aspx?id='+cast(book.id as varchar(10))+' Border=1 width=80 height=120>' else ' <img src=img/pic.jpg border=1 width=80 height=120>' end,descr=' '+SUBSTRING(description,0,100)+'......' ";
private void Page_Load(object sender, System.EventArgs e)
{
if ( !Page.IsPostBack )
{
//get search condition
if(!object.Equals(Session["Prodtype"],null))
//Request.QueryString["Prodtype"]!=null)
type=int.Parse(Session["Prodtype"].ToString());
//int.Parse(Request.QueryString["Prodtype"].ToString());
conn.Open();
SqlCommand cmd = new SqlCommand("select count(*) "+strSql,conn);
recNum = Convert.ToInt32(cmd.ExecuteScalar());
conn.Close();
//-----------pageRecNum
if(recNum>=1)
{
ddlPageRowNum.Items.Clear();
for( int i=1;i<=recNum;i++ )
{
ddlPageRowNum.Items.Add(i.ToString());
}
if ( recNum < 5 )
{
ddlPageRowNum.SelectedIndex = recNum - 1;
}
else
{
ddlPageRowNum.SelectedIndex = 4;
}
//------------------pageRecNum,pageNum
pageRecNum = Convert.ToInt32(ddlPageRowNum.SelectedValue);
if ( Convert.ToInt32(recNum % pageRecNum) == 0 )
{
pageNum = Convert.ToInt32(recNum/pageRecNum);
}
else
{
pageNum = Convert.ToInt32(recNum/pageRecNum) + 1;
}
ddlJumpToPageNum.Items.Clear();
for( int i=1;i<=pageNum;i++ )
{
ddlJumpToPageNum.Items.Add(i.ToString());
}
lblPageNum.Text = pageNum.ToString();
ViewState["PageRowNum"] = pageRecNum;
ViewState["RecNum"] = recNum;
ViewState["PageNum"] = pageNum;
//-----------------curPageNO
curPageNO = 1;
ViewState["CurPageNO"] = curPageNO;
//------------------
pageRecNum = Convert.ToInt32(ViewState["PageRowNum"]);
recNum = Convert.ToInt32(ViewState["RecNum"]);
curPageNO = Convert.ToInt32(ViewState["CurPageNO"]);
pageNum = Convert.ToInt32(ViewState["PageNum"]);
//------------pageNum
lblRecNum.Text = recNum.ToString();
lblCurPageNO.Text = curPageNO.ToString();
//------------pageNum
if ( pageRecNum==0 || recNum==0 )
{
Response.Write("发生错误!");
Response.End();
}
if ( curPageNO <= 1 )
{
curPageNO = 1;
btnFirst.Enabled = false;
btnPreview.Enabled = false;
}
//-----------------
lblRecNum.Text = recNum.ToString();
lblCurPageNO.Text = curPageNO.ToString();
//-----------------
if ( !Page.IsPostBack )
{
BindData();
}
}
else
{
btnFirst.Enabled = false;
btnPreview.Enabled = false;
btnNext.Enabled = false;
btnLast.Enabled = false;
lblRecNum.Text="0";
lblCurPageNO.Text="0";
lblPageNum.Text="0";
ddlPageRowNum.Enabled=false;
ddlJumpToPageNum.Enabled=false;
}
}
}
private void BindData()
{
str+=strSql;
//ShowMess.Text=str;
conn.Open();
SqlDataAdapter da = new SqlDataAdapter( str ,conn);
//创建DataSet对象
ShowMess.Text=curPageNO.ToString()+"页数 "+pageRecNum.ToString();
DataSet ds = new DataSet();
da.Fill(ds,(curPageNO-1) * pageRecNum,pageRecNum,"Bookde");
//----------
DataList1.DataSource = ds.Tables["Bookde"];
DataList1.DataBind();
//curPageNO-=1;
ds.Clear();
conn.Close();
lblCurPageNO.Text = curPageNO.ToString();
}
private void ddlPageRowNum_SelectedIndexChanged(object sender, System.EventArgs e)
{
#region pageRowNum,pageNum
pageRecNum = Convert.ToInt32(ddlPageRowNum.SelectedValue);
if ( Convert.ToInt32(recNum % pageRecNum) == 0 )
{
pageNum = Convert.ToInt32(recNum/pageRecNum);
}
else
{
pageNum = Convert.ToInt32(recNum/pageRecNum) + 1;
}
ddlJumpToPageNum.Items.Clear();
for( int i=1;i<=pageNum;i++ )
{
ddlJumpToPageNum.Items.Add(i.ToString());
}
lblPageNum.Text = pageNum.ToString();
ViewState["PageRowNum"] = pageRecNum;
ViewState["PageNum"] = pageNum;
//-----------
if ( curPageNO > pageNum )
{
curPageNO = 1;
ViewState["CurPageNO"] = curPageNO.ToString();
}
//------
btnFirst.Enabled = true;
btnPreview.Enabled = true;
btnNext.Enabled = true;
btnLast.Enabled = true;
if ( curPageNO == 1 )
{
btnFirst.Enabled = false;
btnPreview.Enabled = false;
}
if ( curPageNO == pageNum )
{
btnNext.Enabled = false;
btnLast.Enabled = false;
}
//---------
BindData();
#endregion*/
}
#region 移动页面
private void MoveFirst()
{
curPageNO = 1;
ViewState["CurPageNO"] = curPageNO.ToString();
BindData();
//------
btnFirst.Enabled = false;
btnPreview.Enabled = false;
btnNext.Enabled = true;
btnLast.Enabled = true;
}
private void MovePrevious()
{
curPageNO = curPageNO - 1;
ViewState["CurPageNO"] = curPageNO.ToString();
BindData();
//------
if ( curPageNO == 1 )
{
btnFirst.Enabled = false;
btnPreview.Enabled = false;
}
btnNext.Enabled = true;
btnLast.Enabled = true;
}
private void MoveNext()
{
curPageNO = curPageNO + 1;
ViewState["CurPageNO"] = curPageNO.ToString();
BindData();
//------
btnFirst.Enabled = true;
btnPreview.Enabled = true;
if ( curPageNO == pageNum )
{
btnNext.Enabled = false;
btnLast.Enabled = false;
}
}
private void MoveLast()
{
curPageNO = pageNum;
ViewState["CurPageNO"] = curPageNO.ToString();
BindData();
//------
btnFirst.Enabled = true;
btnPreview.Enabled = true;
btnNext.Enabled = false;
btnLast.Enabled = false;
}
#endregion
private void ddlJumpToPageNum_SelectedIndexChanged(object sender, System.EventArgs e)
{
curPageNO = Convert.ToInt32(ddlJumpToPageNum.SelectedValue);
BindData();
}
}
}
/////////////////////////////////////////////////
错误如下:
列前缀 'Book' 与查询中所用的表名或别名不匹配。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 列前缀 'Book' 与查询中所用的表名或别名不匹配。
源错误:
行 270: 数 "+pageRecNum.ToString();
行 271: DataSet ds = new DataSet();
行 272: da.Fill(ds,(curPageNO-1) * pageRecNum,pageRecNum,"Bookde");
行 273: //----------
行 274: DataList1.DataSource = ds.Tables["Bookde"];
源文件: c:\inetpub\wwwroot\ebuy\searchresult.aspx.cs 行: 272
堆栈跟踪:
[SqlException: 列前缀 'Book' 与查询中所用的表名或别名不匹配。]