高分请教 DataList分页 在页面跳转时的问题??

chenyulancn 2006-05-22 07:21:56
以下是 显示详细查询的页面代码, 其中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' 与查询中所用的表名或别名不匹配。]
...全文
194 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
taijiman 2007-03-17
  • 打赏
  • 举报
回复
不要用跳转了,不安全!

首先在设计页面上定义两个Label控件:ID分别为“labNowPage”和“labCount”,分别用来显示当前页数和总页数。
再定义四个LinkButton控件,ID分别为“lnkbtnTop”、“lnkbtnPrve”、“lnkbtnNext”和“lnkbtnLast”,分别用来进行“首页”、“上一页”、“下一页”和“尾页”的翻页操作。
当然还有一个DataList(ID="DataList1")控件了。

//cs文件中的内容
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dlBind();
}
}
public void dlBind()
{
int curpage = Convert.ToInt32(labNowPage.Text);
PagedDataSource ps = new PagedDataSource();
SqlConnection myCnn = new SqlConnection("server=(local);uid=sa;pwd=sa;database=pubs");
myCnn.Open();
SqlDataAdapter myAdp = new SqlDataAdapter("select * from authors", myCnn);
DataSet ds = new DataSet();
myAdp.Fill(ds, "authors");

ps.DataSource = ds.Tables["authors"].DefaultView;
ps.AllowPaging = true;
ps.PageSize = 4;
ps.CurrentPageIndex = curpage - 1;

lnkbtnPrve.Enabled = true;
lnkbtnTop.Enabled = true;
lnkbtnNext.Enabled = true;
lnkbtnLast.Enabled = true;
if (curpage == 1)
{
lnkbtnTop.Enabled = false;
lnkbtnPrve.Enabled = false;
}
if (curpage == ps.PageCount)
{
lnkbtnNext.Enabled = false;
lnkbtnLast.Enabled = false;
}
labCount.Text = Convert.ToString(ps.PageCount);
DataList1.DataSource = ps;
DataList1.DataKeyField = "au_id";
DataList1.DataBind();
}
protected void lnkbtnPrve_Click(object sender, EventArgs e)
{
labNowPage.Text = Convert.ToString(Convert.ToInt32(labNowPage.Text) - 1);
dlBind();
}
protected void lnkbtnTop_Click(object sender, EventArgs e)
{
labNowPage.Text = "1";
dlBind();
}
protected void lnkbtnNext_Click(object sender, EventArgs e)
{
labNowPage.Text = Convert.ToString(Convert.ToInt32(labNowPage.Text) + 1);
dlBind();
}
protected void lnkbtnLast_Click(object sender, EventArgs e)
{
labNowPage.Text = labCount.Text;
dlBind();
}
孟子E章 2006-05-22
  • 打赏
  • 举报
回复
这里说的很清楚了
列前缀 'Book' 与查询中所用的表名或别名不匹配
应该是你sql语句有问题,仔细看看吧

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧