请问datagrid即可排序,又可分页如何做?

解决方案 »

  1.   

    并且,为什么我的AllowSorting=true,还是没有显示链接呢?
      

  2.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=00C78024-5C08-4F3F-BCA8-AB3C0B330A12
      

  3.   

    给你一段代码供你参考:*.cs 文件:using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Configuration;namespace NCMT.SysAdmin
    {
    /// <summary>
    /// SystemLog 的摘要说明。
    /// </summary>
    public class SystemLog : System.Web.UI.Page
    {

    private static string sConn;
    private string sSql;
    private string sSortView = "F_OperateDate DESC";
    private SqlConnection conn;
    private SqlCommand cmd;
    private SqlDataAdapter apt;
    protected System.Web.UI.WebControls.DataGrid dgSysLog;
    private DataSet ds; private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!Page.IsPostBack)
    {
    if(Session["UserID"] == null || Session["UserID"].ToString() == "")
    Response.Write("<script language=javascript>window.top.location.href='../login.aspx'</script>"); sConn = ConfigurationSettings.AppSettings["NCMT"]; LoadDataToGrid();
    }
    } //显示系统日志信息
    private void LoadDataToGrid()
    {
    //sSql = "Select a.*,b.F_UserName From T_SystemLog a,T_AIU b Where a.F_UserID = b.F_UserID";
    sSql = "Select ID,F_UserID,(Select F_UserName From T_AIU Where F_UserID = T_SystemLog.F_UserID) As F_UserName,F_OperateDate,F_Action,F_Note From T_SystemLog";
    conn = new SqlConnection(sConn);
    ds = new DataSet();
    apt = new SqlDataAdapter(sSql,conn);
    try
    {
    apt.Fill(ds,"dtSysLog");
    DataView dv = ds.Tables["dtSysLog"].DefaultView;
    dv.Sort = sSortView; dgSysLog.DataSource = dv;
    dgSysLog.DataKeyField = "ID";
    dgSysLog.DataBind();
    }
    catch(Exception ex)
    {
    Response.Redirect("../SysError.aspx?SysErrorInfo=" + HttpUtility.HtmlEncode(ex.Message.Replace("\n","&nbsp;")),false);
    }
    } //翻页
    private void dgSysLog_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    dgSysLog.CurrentPageIndex = e.NewPageIndex;
    LoadDataToGrid();
    } //按指定列排序
    private void dgSysLog_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
    {
    sSortView = e.SortExpression;
    LoadDataToGrid();
    } //给模板列每个按钮添加客户端 onclick 事件
    private void dgSysLog_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    switch(e.Item.ItemType)
    {
    case ListItemType.AlternatingItem:
    case ListItemType.EditItem:
    case ListItemType.Item:
    case ListItemType.SelectedItem:
    {
    LinkButton lbtDelete = (LinkButton)e.Item.FindControl("lbtDel");
    lbtDelete.Attributes.Add("onclick","return confirm('您确定要删除该日志吗?');");
    break;
    }
    }
    } //删除日志
    private void dgSysLog_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    if(e.CommandName == "DelSysLog")
    {
    int intID = Convert.ToInt32(e.Item.Cells[0].Text);
    sSql = "Delete From T_SystemLog Where ID = " + intID;
    conn = new SqlConnection(sConn);
    cmd = new SqlCommand(sSql,conn);
    conn.Open();
    SqlTransaction tran = conn.BeginTransaction();
    try
    {
    cmd.Transaction = tran;
    cmd.ExecuteNonQuery();
    //提交事务
    tran.Commit(); //如果删除的是当前页的最后一条记录,则网格当前页的索引号自动减一
    if(dgSysLog.Items.Count == 1 && dgSysLog.PageCount > 1)
    dgSysLog.CurrentPageIndex -= 1; LoadDataToGrid();
    }
    catch(Exception ex)
    {
    //回滚事务
    tran.Rollback(); Response.Redirect("../SysError.aspx?SysErrorInfo=" + HttpUtility.HtmlEncode(ex.Message.Replace("\n","&nbsp;")),false);
    }
    finally
    {
    conn.Close();
    }
    }
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.dgSysLog.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgSysLog_ItemCommand);
    this.dgSysLog.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.dgSysLog_PageIndexChanged);
    this.dgSysLog.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.dgSysLog_SortCommand);
    this.dgSysLog.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.dgSysLog_ItemDataBound);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
    }
      

  4.   

    前台代码: html 代码:<%@ Page language="c#" Codebehind="SystemLog.aspx.cs" AutoEventWireup="false" Inherits="NCMT.SysAdmin.SystemLog" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>系统日志信息</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

    <script language=javascript>
    <!--
    //禁止后退到本页
    JavaScript:window.history.forward(1);
    //-->
    </script>

    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <table style="FONT-SIZE: 13px" borderColor="#e9e9e9" cellSpacing="0" cellPadding="2" width="100%"
    align="center" border="1">
    <tr>
    <td style="FONT-SIZE: 18px; COLOR: teal" align="center" bgColor="#f0f0f0"><FONT face="宋体">系统日志</FONT></td>
    </tr>
    <tr>
    <td></td>
    </tr>
    <TR>
    <TD vAlign="top" align="center" width="100%"><FONT face="宋体"><asp:datagrid id="dgSysLog" runat="server" Width="100%" AllowSorting="True" AutoGenerateColumns="False"
    PageSize="18" AllowPaging="True">
    <AlternatingItemStyle Font-Size="X-Small" BackColor="#F9F9F9"></AlternatingItemStyle>
    <ItemStyle Font-Size="X-Small"></ItemStyle>
    <HeaderStyle Font-Size="X-Small" Wrap="False" HorizontalAlign="Center" ForeColor="Blue" VerticalAlign="Middle"
    BackColor="#F2F2F2"></HeaderStyle>
    <Columns>
    <asp:BoundColumn Visible="False" DataField="ID" SortExpression="ID"></asp:BoundColumn>
    <asp:BoundColumn DataField="F_UserID" SortExpression="F_UserID" HeaderText="用户ID">
    <HeaderStyle Width="10%"></HeaderStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="F_UserName" SortExpression="F_UserName" HeaderText="用户姓名">
    <HeaderStyle Wrap="False" Width="10%"></HeaderStyle>
    <ItemStyle Wrap="False"></ItemStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="F_OperateDate" SortExpression="F_OperateDate DESC" HeaderText="操作时间">
    <HeaderStyle Width="20%"></HeaderStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="F_Action" SortExpression="F_Action" HeaderText="用户行为">
    <HeaderStyle Width="25%"></HeaderStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="F_Note" SortExpression="F_Note" HeaderText="说明">
    <HeaderStyle Width="45%"></HeaderStyle>
    </asp:BoundColumn>
    <asp:TemplateColumn>
    <HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
    <ItemStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
    <ItemTemplate>
    <asp:LinkButton id="lbtDel" runat="server" ForeColor="Blue" CommandName="DelSysLog">删除</asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    <PagerStyle VerticalAlign="Middle" NextPageText="下一页&amp;gt;" Font-Size="X-Small" PrevPageText="&amp;lt上一页;"
    HorizontalAlign="Center" Wrap="False"></PagerStyle>
    </asp:datagrid></FONT></TD>
    </TR>
    </table>
    </form>
    </body>
    </HTML>
      

  5.   

    分页 你只要利用DATAGRID自带的 分页功能就可以!也可以自己写一个!不过 那就很简单了\1
      

  6.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=B12283DE-DB20-4322-ACCC-12724442808A在给你个分页的例子 很好用!
      

  7.   

    http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/CreatingaPageableSortableDataGrid.mspx
      

  8.   

    排序需要在排序列里增加 SortExpression="***";
    分页太多了。定义 DataGrid1_PageIndexChange();
      

  9.   

    dadagrid的事件里,里面的参数,查查msdn就知道怎么用了,个人感觉不要什么问题都问,先查查msdn,在查论坛里的老帖子。实在没有再问。
      

  10.   

    datagrid行排序和筛选
    http://blog.csdn.net/allenting/archive/2005/01/27/271072.aspxdatagrid自动分页
    http://blog.csdn.net/allenting/archive/2005/01/27/271073.aspx
      

  11.   

    DataGrid分页要求显示第几页,共几页,上一页,下一页,并且能点击标题排序.怎样做最好?
      

  12.   

    TO:05108807619(爱小飞)
    webmatrix 是什么?
      

  13.   

    webmatrix是微软开发的免费版aspx.net开发程序,你用webmatrix到google查下就可以了。