高分请教 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' 与查询中所用的表名或别名不匹配。]
...全文
233 2 打赏 收藏 转发到动态 举报
写回复
用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语句有问题,仔细看看吧
内容概要:本文详细介绍了基于无刷直流电机的电子机械制动执行器的MATLAB/Simulink仿真模型,重点构建并深入分析了其非线性动力学特性。该模型深度融合了无刷直流电机的电磁动力学与制动执行机构的机械传动动力学,通过引入高精度的Stribeck摩擦模型,有效提升了对系统在启动、停止及低速运行等工况下复杂动静态摩擦行为的模拟能力,从而实现了对整个执行器系统动态响应特性、控制性能及瞬态过程的高保真仿真,为下一代线控刹车(Brake-by-Wire)系统的研发、控制算法验证与优化提供了强大的数字化设计与验证平台。; 适合人群:具备一定电机控制理论、汽车电子工程、自动化或机电一体化背景的研究生、高校科研人员及从事电驱动系统、汽车底盘控制系统开发的工程师。; 使用场景及目标:①用于电子机械制动(EMB)系统总体方案的设计、可行性验证与动态性能评估;②作为开发与在环测试(HIL/SIL)先进控制器(如高鲁棒性PID、滑模变结构控制、模型预测控制MPC等)的核心仿真平台;③深入研究电机与精密丝杠等机械部件之间的强耦合效应,以及非线性摩擦对系统控制精度、响应延迟和稳态误差的影响机制。; 阅读建议:学习者应熟练掌握MATLAB/Simulink软件操作,并具备电机学、经典与现代控制理论、机械动力学等相关基础知识,建议在理解模型架构的基础上,通过调整关键参数(如摩擦系数、转动惯量、传动比)和施加不同的指令信号与负载扰动,系统性地探究系统各环节的动态响应规律,进而进行模型的二次开发与优化。

62,271

社区成员

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

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

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

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