俺用一分页控件来对DataList分页后,有一怪问题,就是原先代码中<SelectedItemTemplate>中的代码不起作用了...显示空白,弄了好久,不得其解,望高指教,以下是代码: protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!Page.IsPostBack)
            {
                TUserRset oUserThese = new TUserRset();
                oUserThese.SqlWhere = "isdelete = 0";
                pager.RecordCount = oUserThese.CalculateRecord_WithWhere();    //计算表中总记录数
                pager.CurrentPageIndex = 0; //分页控件的当前页索引                InitialUser();
            }
        }
        catch
        {
            Response.Write("<script language='javascript'>alert('出错了...请联系管理员!');window.history.go(-1);</script>");
        }    }    //初始化填充数据
    protected void InitialUser()
    {
            //分页参数
            int StartIndex = (pager.CurrentPageIndex - 1) * pager.PageSize;
            int PageSize = pager.PageSize;            //装载分页数据集
            TUserRset oUserThese = new TUserRset();
            oUserThese.SqlOrderBy = "LoginID DESC";
            oUserThese.SqlWhere = "isdelete = 0";
            oUserThese.Load(StartIndex, PageSize);
            DataList_UserList.DataSource = oUserThese.DataSource;
            DataList_UserList.DataBind();            ////显示分页信息
            //pager.CustomInfoText = "记录总数:<font color=\"blue\"><b>" + pager.RecordCount.ToString() + "</b></font>";
            //pager.CustomInfoText += " 总页数:<font color=\"blue\"><b>" + pager.PageCount.ToString() + "</b></font>";
            //pager.CustomInfoText += " 当前页:<font color=\"red\"><b>" + pager.CurrentPageIndex.ToString() + "</b></font>";
    }    //转页事件
    protected void ChangePage(object src, PageChangedEventArgs e)
    {
        pager.CurrentPageIndex = e.NewPageIndex;
        InitialUser();
    }
    //DataList删除事件
    protected void DataList_UserList_ItemCommand(object sender, DataListCommandEventArgs e)
    {
        if (e.CommandName == "Delete")
        {
            TUser.UpdateIsDeletebyStringID(1, e.CommandArgument.ToString());
            InitialUser();
            Response.Write("<script language=javascript>alert(''成功删除!);</script>");
        }
        else if (e.CommandName == "Select")
        {
            DataList_UserList.SelectedIndex = e.Item.ItemIndex;
            DataList_UserList.DataBind();
        }
        else if (e.CommandName == "EditPassword")
        {
            Response.Redirect("~/DeskTopPage/SysSetting/SysSetting_UserManage_EditUserPass.aspx?LoginID=" + e.CommandArgument.ToString());
        }
    }    public string HS(string SourceString)
    {
        TDept oDeptThis = new TDept();
        oDeptThis.SelectByStringID(SourceString);
        return oDeptThis.DeptName;
    }

解决方案 »

  1.   

    DTable能够快速实现asp.net项目的数据表显示、查看、新增、更新、删除。 
    从数据表格的显示来看,它能使用DataTable(以及所有能够转换为DataTable的数据源,如:xml等),DataReader,SQL语句,存储过程作为数据源实现数据表格的显示,并且能够实现内置的分页导航。对于存储过程来说,可以使用带分页控制的存储过程来实现高效的数据显示,也可以使用不分页的存储过程实现自动分页。如果使用SQL语句,DTable将首先查询出当前分页的ID集合(及时ID并不连续),然后再查询出当前分页所有ID集合的记录集来实现数据表格的呈现,同时还能提供内置查询控件生成等丰富的功能。
    无论使用何种数据源,都可以对数据表格的各个列进行格式设置,如:货币、日期、布尔值的替换、链接图片(自动识别Flash文件),二进制图片以及支持string.Format的格式设置。与此同时,还可以为某列生成超链接,并把某列的值作为参数传递;还可以为某列生成一个javascrip的点击事件....
    DTable内置了记录的详细查看,类似新闻系统的新闻查看页面。点击自动生成的第一个字段链接即可进入详细查看状态。详细查看状态仍然可以对任何字段进行格式化来显示各种复杂的数据。
    DTable内置了功能强大的记录新增和更新功能。 它可以通过一个SQL语句或者DataTable的列结构自动生成记录添加和更新的界面,同时根据列的属性或者你的定义来自动生成客户端验证。即使你不使用DTable来实现你的记录新增和插入,你仍然可以把它作为一个界面生成器来生成记录新增页面的元素同时也得到了客户端验证的所有代码。
    对于新增和记录更新,你仍然可以为任何列实现数据的格式化,让界面的某个字段使用下拉列表、Checkbox、超文本编辑器、布尔值的选择、文件上传控件....你并不需要编写任何代码,只是告诉它该列将要格式化的类型而已
    DTable能够实现的功能远不止这些。对于网站前端来说,可以使用它显示数据表格、显示购物系统的复杂的缩略图多列表格以及信息查看页面。同时它也是后台管理的绝佳选择。多文件上传并生成缩略图、内置的超文本编辑器、发布静态页面功能可以胜任数据管理甚至新闻发布系统;甚至可以把它作为注册系统,因为它内置了用户名类型检测重复的记录数以及密码类型来生成密码验证和md5加密;放置跨页提交和重复提交的隐藏验证码功能.....
    对于流行的管理系统来说,密集的数据管理、客户端排序以及网格模式的批次更新功能能满足绝大多数情况的需求。别用datalist了,用Dtable把,网上有控件和源码下载,根本不用考虑分页的问题,这个控件啥都做好了!
      

  2.   


    问题已解决了原来要在处理Select的时候加初始化数据处理