问题描述:
使用了AspNetPager分页控件之后我绑定的事件执行不了,比如下面的:OnCommand="lbtnMsg_OnCommand",不使用这个控件,事件正常执行,问题找不到出在哪??大侠们指点下!------------------------------------------------
前台页面:<td>
<asp:LinkButton ID="lbtnDel" OnCommand="lbtnMsg_OnCommand" CommandArgument='<%# Eval("MID") %>' CommandName="SetDel" runat="server" >删除</asp:LinkButton>
</td><!--分页控件-->
<webdiyer:AspNetPager ID="anpMessages"
CssClass="anpMessages"
PageSize="8" runat="server" Visible="true"
ShowPageIndex="true"
FirstPageText="首页"
LastPageText="尾页"
AlwaysShow="True"
OnPageChanged="anpMessages_PageChanged"
NextPageText="下一页"
PrevPageText="前一页"
ShowPageIndexBox="Always"
ShowNavigationToolTip="True"
MoreButtonClass=""
NumericButtonCount="5" NumericButtonType="Image"
PageIndexBoxType="DropDownList">
</webdiyer:AspNetPager>-------------------------------------
后台cs文件:
//linkButton事件
protected void lbtnMsg_OnCommand(object sender, CommandEventArgs e)
{
int id = Convert.ToInt32(e.CommandArgument);
string cmdName = e.CommandName.ToString();
switch (cmdName)
{
case "SetDel"://删除
DelMsgByID(id);
break;
case "SetHigh"://设置显示优先
SetHighByMID(id);
break;
default:
break;
}
}//数据绑定
protected void AllMessageBind()
{
PagedDataSource pds = new PagedDataSource();
anpMessages.RecordCount = MessageService.GetAllMessagesCount();
pds.DataSource = MessageService.GetAllMessagesToManage();
pds.CurrentPageIndex = anpMessages.CurrentPageIndex - 1;
pds.PageSize = anpMessages.PageSize;
pds.AllowPaging = true;
this.rptMsg.DataSource = pds;//rptMsg是Repeater控件
this.rptMsg.DataBind();
}protected void anpMessages_PageChanged(object sender, EventArgs e)
{
AllMessageBind();
}
使用了AspNetPager分页控件之后我绑定的事件执行不了,比如下面的:OnCommand="lbtnMsg_OnCommand",不使用这个控件,事件正常执行,问题找不到出在哪??大侠们指点下!------------------------------------------------
前台页面:<td>
<asp:LinkButton ID="lbtnDel" OnCommand="lbtnMsg_OnCommand" CommandArgument='<%# Eval("MID") %>' CommandName="SetDel" runat="server" >删除</asp:LinkButton>
</td><!--分页控件-->
<webdiyer:AspNetPager ID="anpMessages"
CssClass="anpMessages"
PageSize="8" runat="server" Visible="true"
ShowPageIndex="true"
FirstPageText="首页"
LastPageText="尾页"
AlwaysShow="True"
OnPageChanged="anpMessages_PageChanged"
NextPageText="下一页"
PrevPageText="前一页"
ShowPageIndexBox="Always"
ShowNavigationToolTip="True"
MoreButtonClass=""
NumericButtonCount="5" NumericButtonType="Image"
PageIndexBoxType="DropDownList">
</webdiyer:AspNetPager>-------------------------------------
后台cs文件:
//linkButton事件
protected void lbtnMsg_OnCommand(object sender, CommandEventArgs e)
{
int id = Convert.ToInt32(e.CommandArgument);
string cmdName = e.CommandName.ToString();
switch (cmdName)
{
case "SetDel"://删除
DelMsgByID(id);
break;
case "SetHigh"://设置显示优先
SetHighByMID(id);
break;
default:
break;
}
}//数据绑定
protected void AllMessageBind()
{
PagedDataSource pds = new PagedDataSource();
anpMessages.RecordCount = MessageService.GetAllMessagesCount();
pds.DataSource = MessageService.GetAllMessagesToManage();
pds.CurrentPageIndex = anpMessages.CurrentPageIndex - 1;
pds.PageSize = anpMessages.PageSize;
pds.AllowPaging = true;
this.rptMsg.DataSource = pds;//rptMsg是Repeater控件
this.rptMsg.DataBind();
}protected void anpMessages_PageChanged(object sender, EventArgs e)
{
AllMessageBind();
}
或onclick 中GridViewRow gvr = (sender as LinkButton).NamingContainer
as GridViewRow;
{
AllMessageBind();
}改为protected void anpMessages_PageChanging(object sender, EventArgs e)
{
AllMessageBind();
}
{
PagedDataSource pds = new PagedDataSource();
anpMessages.RecordCount = MessageService.GetAllMessagesCount();
pds.DataSource = MessageService.GetAllMessagesToManage();
pds.CurrentPageIndex = anpMessages.CurrentPageIndex - 1;
pds.PageSize = anpMessages.PageSize;
pds.AllowPaging = true;
this.rptMsg.DataSource = pds;//rptMsg是Repeater控件
this.rptMsg.DataBind();}
使用Repeater控件则不会。
{
switch (e.CommandName)
{
case "SetDel"://删除
DelMsgByID(id);
break;
case "SetHigh"://设置显示优先
SetHighByMID(id);
break;
default:
break;
}
}
但repeater 有个很不好的缺点就是无法自动分页.如果分页要写一大堆的代码.
性能上来说,主要在控件呈现出来, 由于内置许多功能,GridView 比较臃肿,相对来比 Repeater 要低,但是这一点上,通常又不是那么的明显,
因为你不会用 GridView 或者 Repeater 或者 DataList 来一次性显示 几百上千条数据吧?
这样的数据,就是用 Response.Write 也慢啊
比如QuickPager,就不用写这么多的代码了。http://topic.csdn.net/u/20110130/08/9aa19fd5-96ea-4101-be22-2ee22bb2bf53.html
你现在用GridView也可以的,添加GridView的RowCommand事件。在事件里面判断CommandName执行
上面2中方法LinkButton的OnCommand 不需要了