问题描述:
使用了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();
}

解决方案 »

  1.   

    使用gridiew_rowCommand
    或onclick  中GridViewRow gvr = (sender as LinkButton).NamingContainer 
    as GridViewRow; 
      

  2.   

    这个控件有一个pagechanged事件,在这个事件处理程序里写代码就能执行了
      

  3.   

    已经绑定了 OnPageChanged="anpMessages_PageChanged"
      

  4.   

    protected void anpMessages_PageChanged(object sender, EventArgs e) 

    AllMessageBind(); 
    }改为protected void anpMessages_PageChanging(object sender, EventArgs e) 

    AllMessageBind(); 
    }
      

  5.   

    你应该在这个事件里面写 protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
        {
     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();}
      

  6.   

    其实我一直很纠结这个样一个问题,使用GridView控件,会产生大量的table标签,性能方面似乎```
    使用Repeater控件则不会。
      

  7.   

    使用gridiew_rowCommandprotected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        switch (e.CommandName)
        {
                case "SetDel"://删除
                    DelMsgByID(id);
                    break;
                case "SetHigh"://设置显示优先
                    SetHighByMID(id);
                    break;
                default:
                    break;
            }
    }
      

  8.   

    Repeater是非常灵活的数据控件,数据呈现的样式你你自己定义的(不像gridview那样是table呈现)
      

  9.   

    其中“id”可新增<asp:HiddenField ID="txt_id" value="<%# Eval("MID") %>" runat="server" />获得
      

  10.   

    Repeater的确是比较灵活一点  但是GridView其实也都她的好处 它里面的功能还是相当强大的GridView的分页功能,是把所有数据都拿出来,如果数据量很大的话,速度会很慢。
     但repeater   有个很不好的缺点就是无法自动分页.如果分页要写一大堆的代码. 
    性能上来说,主要在控件呈现出来,   由于内置许多功能,GridView   比较臃肿,相对来比   Repeater   要低,但是这一点上,通常又不是那么的明显,   
    因为你不会用   GridView   或者   Repeater   或者   DataList   来一次性显示   几百上千条数据吧? 
    这样的数据,就是用   Response.Write   也慢啊
      

  11.   

    可以尝试一下其他的分页控件,
    比如QuickPager,就不用写这么多的代码了。http://topic.csdn.net/u/20110130/08/9aa19fd5-96ea-4101-be22-2ee22bb2bf53.html
      

  12.   

    大家都谈了数据绑定的方法,是不错。可能还不能解决我的问题,我想要解决的是绑定数据后的事件执行问题。最好能不用GridView控件4楼的朋友,使用anpMessages_PageChanging依然不能解决问题。
      

  13.   

    使用repeater,linkbutton在Repeater里面,添加Repeater的ItemCommand事件,在事件里面判断CommandName执行。
    你现在用GridView也可以的,添加GridView的RowCommand事件。在事件里面判断CommandName执行
    上面2中方法LinkButton的OnCommand 不需要了