我在为Datalist做一个分页功能,使用动态添加linkbutton控件的方法来显示页码,动态添加的linkbutton都调用一个事件,可是当点击时事件未被触发,请高手指点。代码如下://显示页码
protected void AddPageNum()
{
divPageNum.Controls.Clear(); if (pageCount == 1 || !ps.AllowPaging) return;
for (int i = 0; i < pageCount; i++)
{
if(i!=currentPage)
{ LinkButton lbtn = new LinkButton(); lbtn.ID = "lbtn" + i.ToString();
lbtn.Text = Convert.ToString(i + 1);
lbtn.ToolTip = " 转到第" + lbtn.Text + "页";
lbtn.CommandArgument = i.ToString();
lbtn.OnClientClick += new EventHandler(lbtn_Click); //点击时触发此事件
divPageNum.Controls.Add(lbtn);
}
else
{
Literal li = new Literal(); li.Text = Convert.ToString(i + 1); li.ID = "li" + i.ToString(); divPageNum.Controls.Add(li);
} }
//所要触发的事件
protected void lbtn_Click(Object sender, EventArgs e)
{
LinkButton hlSender = (LinkButton)sender;
int index = Convert.ToInt32(hlSender.Text) - 1;
tmpPage = index;
numFlag = true;
BindDataList();
AddPageNum();
}
protected void AddPageNum()
{
divPageNum.Controls.Clear(); if (pageCount == 1 || !ps.AllowPaging) return;
for (int i = 0; i < pageCount; i++)
{
if(i!=currentPage)
{ LinkButton lbtn = new LinkButton(); lbtn.ID = "lbtn" + i.ToString();
lbtn.Text = Convert.ToString(i + 1);
lbtn.ToolTip = " 转到第" + lbtn.Text + "页";
lbtn.CommandArgument = i.ToString();
lbtn.OnClientClick += new EventHandler(lbtn_Click); //点击时触发此事件
divPageNum.Controls.Add(lbtn);
}
else
{
Literal li = new Literal(); li.Text = Convert.ToString(i + 1); li.ID = "li" + i.ToString(); divPageNum.Controls.Add(li);
} }
//所要触发的事件
protected void lbtn_Click(Object sender, EventArgs e)
{
LinkButton hlSender = (LinkButton)sender;
int index = Convert.ToInt32(hlSender.Text) - 1;
tmpPage = index;
numFlag = true;
BindDataList();
AddPageNum();
}
解决方案 »
- 发送请求断掉如果取消这个进程
- Ole DB的错误 ……急!!!
- 高手帮忙,多谢,程序运行问题!!!急急急!!!
- 关于页面CS文件中成员变量值丢失的问题(Server.Transfer & Context.Handler)
- 如何使文件路径“c:\inetpub\wwwroot\WebApplication1”与URL“http://localhost/WebApplication1”映射到相同的服务器位置。高手指点
- 有关datagrid分页问题,帮忙看看!
- 关于更新Application中实例的数据
- 请教各位大虾,怎么使Datagrid不显示外边框,只显示内部的格线
- 在 Microsoft Visual Studio .NET下可不可以把一个cs文件编译成dll?
- 为什么dbgrid控件在web形式下不显示?
- 不能对单个文件设置权限吗?
- VS 2003中DataAdapter同时执行多条查询?
有两上方案,第一在page_load当中去绑定事件
第二,保存其事件.
like protected void DataList1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Pager)
{
Panel ppr = (Panel)e.Row.FindControl("divPageNum.");
if (ppr != null) {
AddPageNum(ppr);
}
}
}
不过如果是点击没反应,那么可能是添加事件时有问题,你先看看生成的源码,是否产生了__doPostBack 调用。
lbtn.OnClientClick += new EventHandler(lbtn_Click); //点击时触发此事件
==>
lbtn.click+=new EventHandler(Lbtn_Click);
还有,委托事件和控件的动态添加最好写在page_load里,且不受回发约束,即不须用是否回发限制(因为在回发时不保存),每次页面加载(包括首次和回发)即动态添加控件。