ASP.NET GridView分页+排序+自定义样式【常规功能比JS插件使用简单】

来源:互联网 发布:万能数据恢复破解补丁 编辑:程序博客网 时间:2024/06/04 00:25
现在基本都是在用一些前台table框架,做一些分页加排序处理
脑子里面就记得用repeat 处理完table然后调用第三方tablejs插件做分页和排序。
感觉这样能够做到想要的效果。
但是用第三方插件的话,样式定制比较差,不能实现自己想要的样式。
然后再给人整理代码的时候,突然发现好久没用的GridView和 PageNavigator两个net控件 都很牛逼啊
完全定制各种风格
下面是一直到新网站的效果图

排序和分页




 图标


相关gridview的属性
  <asp:GridView ID="gridView" runat="server" AutoGenerateColumns="False" CssClass="table table-bordered table-hover" GridLines="None" AllowPaging="True" PageSize="10" AllowSorting="True" Width="100%" HeaderStyle-HorizontalAlign="Center" HeaderStyle-VerticalAlign="Middle" DataKeyNames="ID" OnRowDataBound="gridView_RowDataBound" OnRowCommand="GridViewList_RowCommand" EmptyDataRowStyle-VerticalAlign="Middle" EmptyDataRowStyle-HorizontalAlign="Center" EmptyDataText="对不起,没有找到相关记录!" OnSorting="gridView_Sorting">
                                <PagerSettings Visible="False" />
                                <HeaderStyle CssClass="table-thead-tr table-thead-tr-bg" />
                                <Columns>
                                    <asp:BoundField HeaderText="ID" DataField="ID" SortExpression="ID">
                                        <HeaderStyle Width="10%" />
                                    </asp:BoundField>
                                    <asp:BoundField HeaderText="应用标识" DataField="ApplicationKey" SortExpression="ApplicationKey">
                                        <HeaderStyle Width="23%" />
                                    </asp:BoundField>
                                    <asp:BoundField HeaderText="应用名称" DataField="ApplicationName" SortExpression="ApplicationName">
                                        <HeaderStyle Width="30%" />
                                    </asp:BoundField>
                                    <asp:BoundField HeaderText="密匙" DataField="EncryptKey" SortExpression="EncryptKey">
                                        <HeaderStyle Width="16%" />
                                    </asp:BoundField>
                                    <asp:TemplateField HeaderText="关联关系">
                                        <ItemTemplate>
                                            <asp:LinkButton ID="lbtnNameRelate" runat="server" CommandName="Relate" Text="查看"></asp:LinkButton>
                                        </ItemTemplate>
                                        <HeaderStyle Width="8%" />
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>
                            <uc1:PageNavigator ID="PageNavigator1" runat="server" ExportToExcel="false" OnPageIndexChanging="gridView_PageIndexChanging" />

 <asp:TemplateField HeaderText="操作">
                                        <ItemTemplate>
                                            <a id="CogButton" runat="server" class="green" href="#" style="padding: 3px; text-decoration: none;">
                                                <i class="icon-cog bigger-130"></i>
                                            </a>
                                            <a id="DeleteButton" runat="server" class="red" href="#" style="padding: 3px; text-decoration: none;">
                                                <i class="icon-trash bigger-130"></i>
                                            </a>
                                        </ItemTemplate>
                                        <ItemStyle Width="100px" />
                                    </asp:TemplateField>


cs后台代码
using System;
using System.Text;
using PRMPortal.Portal.Base;
using PRMPortal.Framework.Tools;
using System.Web.UI.WebControls;
using PRMPortal.Portal.Utilities;
using System.Collections.Generic;
using PRMPortal.Framework.Common;
using PRMPortal.PRMClassLibrary.Common;
//using PRMPortal.PRMClassLibrary.DataObject;
//using PRMPortal.PRMClassLibrary.DataAccess;
//using PRMClassLibrary.Business.DataObjects;
using Capital.iWorkflow.PortalLibrary.DataObject;
using Capital.iWorkflow.PortalLibrary.DataAccess;
using System.Web.UI;
using Capital.iWorkflow.Framework.DataAccess;
namespace PRMPortal.Pages.AppReg
{
    public partial class AppList : System.Web.UI.Page
    {
        private string _SortExpression = string.Empty;
        /// <summary>
        /// 页面参数
        /// </summary>
        private RequestParams _Params;
        public string SortExpression { get; set; }
        #region 页面参数属性及存取方法定义
        [Serializable]
        public class RequestParams
        {
            /// <summary>
            /// 获取页面参数
            /// </summary>
            /// <param name="viewState">ViewState</param>
            public static RequestParams GetParams(StateBag viewState)
            {
                RequestParams p = new RequestParams();
                if (viewState != null && viewState["RequestParams"] != null)
                {
                    p = (RequestParams)viewState["RequestParams"];
                }
                return p;
            }
            /// <summary>
            /// 排序表达式属性
            /// </summary>
            public string SortExpression
            {
                get
                {
                    return _SortExpression;
                }
                set
                {
                    _SortExpression = value;
                }
            }private string _SortExpression = "";
            /// <summary>
            /// 排序升降序属性
            /// </summary>
            public string SortDirection
            {
                get
                {
                    return _SortDirection;
                }
                set
                {
                    _SortDirection = value;
                }
            }private string _SortDirection = "";
            public string key
            {
                get
                {
                    return _key;
                }
                set
                {
                    _key = value;
                }
            }private string _key = "";
            public string name
            {
                get
                {
                    return _name;
                }
                set
                {
                    _name = value;
                }
            }private string _name = "";

            /// <summary>
            /// 保存ViewState
            /// </summary>
            /// <param name="viewState">ViewState</param>
            public void SaveToViewState(StateBag viewState)
            {
                viewState["RequestParams"] = this;
            }
        }
        #endregion
        #region 生命周期事件
        protected override void OnInit(EventArgs e)
        {
            this.PageNavigator1.PageIndexChanging += new GridViewPageEventHandler(gridView_PageIndexChanging);
            base.OnInit(e);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            _Params = RequestParams.GetParams(this.ViewState);
            if (!this.IsPostBack)
            {
                //this.ddlCodeSelect.Items.Clear();
                //List<ProcessGroupCode> l = ProcessGroupCodeAdapter.Instance.GetProcessGroupCodes();
                ////Dictionary<string, KeyValuePair<string, int>> d = Capital.iWorkflow.PortalLibrary.Common.Define.GetProcessGroupCodeDictionary();
                ////List<string> l = new List<string>();
                ////foreach (string key in d.Keys)
                ////{
                ////    l.Add(key);
                ////}
                //this.ddlCodeSelect.DataTextField = "GroupCode";
                ////this.ddlCodeSelect.DataValueField = "ID";
                //this.ddlCodeSelect.DataSource = l;
                //this.ddlCodeSelect.DataBind();
            }
        }
        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            BindGridData();
            _Params.SaveToViewState(ViewState);
        }
        #endregion
        private void BindGridData()
        {
            string keyStr = this.txtKey.Text.Trim();
            List<BizCommonApplication> list = BizCommonApplicationAdapter.Instance.GetBizCommonApplicationList(GetOrderByCondition(), _Params.key, _Params.name);
            this.gridView.DataSource = list;
            gridView.DataBind();
            PageNavigator1.Initialize(gridView, list.Count);
            if (list.Count == 0)
            {
                gridView.DataSource = null;
                gridView.DataBind();
                PageNavigator1.Visible = false;
            }
            else
                PageNavigator1.Visible = true;
        }
        /// <summary>
        /// 获取排序条件
        /// </summary>
        /// <returns>排序条件</returns>
        private OrderByCondition GetOrderByCondition()
        {
            OrderByCondition oc = new OrderByCondition();
            if (_Params.SortExpression.Trim().Length > 0
                && _Params.SortDirection.Trim().Length > 0)
            {
                oc.AppendCondition(_Params.SortExpression, _Params.SortDirection);
            }
            return oc;
        }
        protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            switch (e.Row.RowType)
            {
                case DataControlRowType.DataRow:
                    CalMessageStrBtnCell(e);
                    break;
                default:
                    break;
            }
        }
        private void CalMessageStrBtnCell(System.Web.UI.WebControls.GridViewRowEventArgs e)
        {
            //LinkButton link = (LinkButton)e.Row.FindControl("lbtnNameRelate");
            //int ID = Convert.ToInt32(gridView.DataKeys[e.Row.RowIndex]["ID"].ToString());
            //BizCommonApplication b = BizCommonApplicationAdapter.Instance.Load(ID);
            //string openwindow = string.Format("javascript:showDiv2('" + ID + "','"+b.ApplicationKey+"','"+b.TableName+"');return false;");
            //link.Attributes.Add("OnClientClick", openwindow);
        }
        protected void GridViewList_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "Relate":
                    //GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
                    //int indexRow = row.RowIndex;
                    //int id = Convert.ToInt32(((GridView)sender).DataKeys[indexRow].Values["ID"]);
                    //BizCommonApplication b = BizCommonApplicationAdapter.Instance.Load(id);
                    //List<BizCommonTableDefine> list = BizCommonTableDefineAdapter.Instance.GetBizCommonTableDefineList(b.ApplicationKey);
                    //this.gridView1.DataSource = list;
                    //gridView1.DataBind();
                    //string openwindow = string.Format("<script type='text/javascript'>showDiv2('" + id + "','" + b.ApplicationKey + "','" + b.TableName + "');</script>");
                    ////Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('OK');");
                    ////LiteralJS.Text = "<script>" + openwindow + "</script>";
                    //ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "", openwindow, false);
                    break;
                default:
                    break;
            }
        }
        protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            this.gridView.PageIndex = e.NewPageIndex;
        }
        protected void gridView_Sorting(object sender, GridViewSortEventArgs e)
        {
            if (_Params.SortDirection == "ASC")
                _Params.SortDirection = "DESC";
            else
                _Params.SortDirection = "ASC";
            _Params.SortExpression = e.SortExpression;
            SortExpression = e.SortExpression;
            _SortExpression = e.SortExpression;
            ResetPageIndex();
        }
        /// <summary>
        /// 重置DataGrid页索引为第一页
        /// </summary>
        private void ResetPageIndex()
        {
            gridView.PageIndex = 0;
        }
        #region 查询事件
        /// <summary>
        /// 查询事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ButtonQuery_Click(object sender, EventArgs e)
        {
            _Params.key = this.txtKey.Text;
            _Params.name = this.txtName.Text;

        }
        #endregion
        protected void ButtonSave_Click(object sender, EventArgs e)
        {
            //BizCommonApplicationAdapter.Instance.RegisterBizCommon(this.TextBoxKey.Text, this.TextBoxName.Text, this.TextBoxSecret.Text);
        }
        protected void ddlSelect_SelectedIndexChanged(object sender, EventArgs e)
        {
            //string s = this.HiddenFieldID.Value;
            //int id = Convert.ToInt32(s);
            //BizCommonApplication b = BizCommonApplicationAdapter.Instance.Load(id);
            //this.TextBox1.Text = b.ApplicationKey;
            ////this.TextBox3.Text = b.TableName;
        }
        protected void ButtonRelate_Click(object sender, EventArgs e)
        {
            //string s = this.HiddenFieldID.Value;
            //int id = Convert.ToInt32(s);
            //BizCommonApplication b = BizCommonApplicationAdapter.Instance.Load(id);
            //BizCommonTableDefine td = new BizCommonTableDefine();
            //td.ApplicationKey = b.ApplicationKey;
            ////td.GroupCode = this.ddlCodeSelect.SelectedValue;
            //td.TableName = b.TableName;
            //BizCommonTableDefineAdapter.Instance.Insert(td);
            //List<BizCommonTableDefine> list = BizCommonTableDefineAdapter.Instance.GetBizCommonTableDefineList(b.ApplicationKey);
            //this.gridView1.DataSource = list;
            //gridView1.DataBind();
            //this.TextBox1.Text = b.ApplicationKey;
            ////this.TextBox3.Text = b.TableName;
        }
    }






1 0