使用DataList分页显示数据,双向排序,添加checkbox控件。

来源:互联网 发布:ppt转换器软件 编辑:程序博客网 时间:2024/04/28 19:55
<%@ Page language="c#" Codebehind="DataGrid1.aspx.cs" AutoEventWireup="false" Inherits="News.DataGrid1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>DataGrid1</title>
<meta content="Microsoft Visual Studio 7.0" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form runat="server">
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
<TR>
<td><asp:datagrid id="DataGrid2" runat="server" AllowSorting="True" AutoGenerateColumns="False" AllowPaging="True" PageSize="10" Width="100%" GridLines="Horizontal" AlternatingItemStyle-BackColor="#eeeeee">
<SelectedItemStyle Font-Bold="True" ForeColor="#CCFF99" BackColor="#009999"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<HeaderStyle BackColor="#00AAAA"></HeaderStyle>
<FooterStyle ForeColor="#003399" BackColor="#99CCCC"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="选择">
<HeaderStyle Width="40px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:CheckBox id="checkbox" runat="server"></asp:CheckBox>
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox id="chkExportON" runat="server"></asp:CheckBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="id" SortExpression="id" HeaderText="ID号"></asp:BoundColumn>
<asp:HyperLinkColumn DataNavigateUrlField="id" DataNavigateUrlFormatString="javascript:varwin=window.open('detail.aspx?ID={0}',null,'width=300,height=200');window.Close();" DataTextField="username" HeaderText="用户名" SortExpression="username"></asp:HyperLinkColumn>
<asp:BoundColumn DataField="email" HeaderText="Email" SortExpression="email"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Email">
<ItemTemplate>
<asp:Label id=lblColumn runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.id") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="#003399" BackColor="#99CCCC" Mode="NumericPages"></PagerStyle>
</asp:datagrid></td>
</TR>
<tr>
<td>
<P><asp:panel id="Panel1" runat="server" HorizontalAlign="Right">
<asp:label id="lblPageCount" runat="server"></asp:label>
<asp:label id="lblCurrentIndex" runat="server"></asp:label>
<asp:LinkButton id="btnFirst" runat="server" CommandName="First">首页</asp:LinkButton>&nbsp;&nbsp;
<asp:LinkButton id="btnPrevious" runat="server" CommandName="Previous">上一页</asp:LinkButton><FONT face="宋体">&nbsp;&nbsp;
<asp:LinkButton id="btnNext" runat="server" CommandName="Next">下一页</asp:LinkButton>&nbsp;&nbsp;
<asp:LinkButton id="btnEnd" runat="server" CommandName="End">未页</asp:LinkButton>
<asp:TextBox id="txtIndex" runat="server" Width="24px" MaxLength="2" Columns="2"></asp:TextBox>
<asp:Button id="btnGo" runat="server" Text="Go!" BackColor="Gainsboro" BorderWidth="1px" BorderStyle="Solid" BorderColor="Silver"></asp:Button>
<asp:Label id="lblError" runat="server" Visible="False" ForeColor="Red">No that page!</asp:Label></FONT></asp:panel></P>
</td>
</tr>
<tr>
<td>
<asp:button id="cmdSelectAll" runat="server" Text="全选"></asp:button><asp:button id="cmdFindSelected" runat="server" Text="取得选择的项"></asp:button>
<asp:panel id="pnlIndex" runat="server"></asp:panel>
<asp:label id="Label1" runat="server"></asp:label></td>
</tr>
</TABLE>
</form>
</body>
</HTML>

  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.Configuration;
using System.Data.SqlClient;
namespace News
{
    /// <summary>
    /// DataGrid1 的摘要说明。
    /// </summary>
    public class DataGrid1 : System.Web.UI.Page
    {
                
        protected System.Web.UI.WebControls.DataGrid DataGrid2;
        protected System.Web.UI.WebControls.Button Button1;
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.LinkButton btnPrevious;
        protected System.Web.UI.WebControls.LinkButton btnNext;
        protected System.Web.UI.WebControls.TextBox txtIndex;
        protected System.Web.UI.WebControls.Button btnGo;
        protected System.Web.UI.WebControls.Label lblError;
        protected System.Web.UI.WebControls.Panel Panel1;
        protected System.Web.UI.WebControls.Panel pnlIndex;
        protected System.Web.UI.WebControls.LinkButton btnFirst;
        protected System.Web.UI.WebControls.LinkButton btnEnd;
        protected System.Web.UI.WebControls.Label lblPageCount;
        protected System.Web.UI.WebControls.Label lblCurrentIndex;
        protected System.Web.UI.WebControls.Button cmdSelectAll;
        protected System.Web.UI.WebControls.Button cmdFindSelected;
        string ConnectionStr=ConfigurationSettings.AppSettings["connStr"];    
        private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此处放置用户代码以初始化页面            
            if(!IsPostBack)
            {
                //设置排序表达式
                ViewState["SortOrder"] = "id";
                //设置排序的升降序
                ViewState["OrderDire"] = "ASC";
                BindGrid();            
            }
        }
        

        private void BindGrid()
        {
            //定义数据连接对象,其中数据库连接字符串是在Web.Config文件中定义的
            SqlConnection SconnStr=new SqlConnection(ConnectionStr);
            //创建数据适配器对象
            SqlDataAdapter sda=new SqlDataAdapter("select * from user_info",SconnStr);
            //创建DataSet对象
            DataSet ds=new DataSet();
            try
            {
                //填充数据集
                sda.Fill(ds,"user_info");
                //取得填充表格的默认视图
                DataView view = ds.Tables["user_info"].DefaultView;
                //设置排序关键字
                string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
                //设置排序表达式
                view.Sort =  sort;

                //进行数据绑定
                DataGrid2.DataSource=view;
                DataGrid2.DataBind();
            }
            catch(Exception error)
            {
                Response.Write(error.ToString());
            }        
        }
                

        //显示当前分页信息
        private void ShowStats()
        {
            //显示当前页面是第几页
            lblCurrentIndex.Text = "第 " + (DataGrid2.CurrentPageIndex + 1).ToString() + " 页";
            //显示总页数
            lblPageCount.Text = "总共 " + DataGrid2.PageCount.ToString() + " 页";
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
            //
            InitializeComponent();
            base.OnInit(e);
        }
        
        /// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {    
            this.DataGrid2.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGridPage_Page);
            this.DataGrid2.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.DataGrid2_SortCommand);
            this.DataGrid2.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.changeRowColor);
            this.btnFirst.Click += new System.EventHandler(this.NavigationButtonClick);
            this.btnPrevious.Click += new System.EventHandler(this.NavigationButtonClick);
            this.btnNext.Click += new System.EventHandler(this.NavigationButtonClick);
            this.btnEnd.Click += new System.EventHandler(this.NavigationButtonClick);
            this.btnGo.Click += new System.EventHandler(this.btnGo_Click);
            this.cmdSelectAll.Click += new System.EventHandler(this.cmdSelectAll_Click);
            this.cmdFindSelected.Click += new System.EventHandler(this.cmdFindSelected_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion
        

        //翻页效果
        private void NavigationButtonClick(object sender, System.EventArgs e)
        {
            string direction=((LinkButton)sender).CommandName;
            switch(direction.ToUpper())
            {                
                case "PREVIOUS":
                    //如果当前页不是首页
                    if (DataGrid2.CurrentPageIndex > 0)
                    {
                        //设置DataGrid控件的当前页索引为上一页面
                        DataGrid2.CurrentPageIndex -= 1;
                    }
                    break;
                case "NEXT":
                    if (DataGrid2.CurrentPageIndex < (DataGrid2.PageCount - 1))
                    {
                        //设置DataGrid控件的当前页索引为下一页面
                        DataGrid2.CurrentPageIndex += 1;
                    }
                    break;
                case "END":
                    DataGrid2.CurrentPageIndex = (DataGrid2.PageCount - 1);
                    break;    
                default:
                    DataGrid2.CurrentPageIndex = 0;                    
                    break;
            }
            BindGrid();
            ShowStats();
 
        }
        //去第几页效果
        private void btnGo_Click(object sender, System.EventArgs e)
        {
            int pageIndex=0;
            try
            {
                pageIndex=Convert.ToInt32(txtIndex.Text);
    
            }
            catch(Exception ex)
            {
                lblError.Visible=true;
                lblError.Text=ex.Message;
            }
            finally
            {
                lblError.Visible=false;
                lblError.Text="No that page!";
            }
            if(pageIndex>0&&pageIndex<=DataGrid2.PageCount)
            {
                try
                {
                    DataGrid2.CurrentPageIndex=Math.Min(DataGrid2.PageCount,pageIndex-1);
                    BindGrid();
                    ShowStats();
                }
                catch
                {
                    lblError.Visible=true;
     
                }
                finally
                {
                    lblError.Visible=false;
                }
            }
            else
            {
                lblError.Visible=true;
            }
        }

        public void DataGridPage_Page(object sender, DataGridPageChangedEventArgs e)
        {
            //设置DataGrid当前页的索引值为用户选择的页的索引
            DataGrid2.CurrentPageIndex = e.NewPageIndex;
            //重新绑定数据
            BindGrid();
            //显示当前分页信息
            ShowStats();
        }
        
        // ItemDataBound事件
        private void changeRowColor(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        {
            //如果是数据项并且是交替项
            if(e.Item.ItemType == ListItemType.Item  || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                //添加自定义属性,当鼠标移过来时设置该行的背景色为"6699ff",并保存原背景色
                e.Item.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='#B4BDB3'");
                //添加自定义属性,当鼠标移走时还原该行的背景色
                e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=currentcolor");

            }
        }

        private void cmdSelectAll_Click(object sender, System.EventArgs e)
        {
            System.Web.UI.WebControls.CheckBox checkbox;
            //如果要全选
            if(cmdSelectAll.Text == "全选")
            {
                //循环设置DataGrid控件中的项
                foreach(DataGridItem oDataGridItem in DataGrid2.Items)
                {
                    //建立模板列中CheckBox控件的引用
                    checkbox = (CheckBox)oDataGridItem.FindControl("checkbox");
                    //选中
                    checkbox.Checked =true;
                }

                cmdSelectAll.Text = "全消";
            }
            else
            {
                foreach(DataGridItem oDataGridItem in DataGrid2.Items)
                {
                    //建立模板列中CheckBox控件的引用
                    checkbox = (CheckBox)oDataGridItem.FindControl("checkbox");
                    //取消
                    checkbox.Checked = false;
                }
                cmdSelectAll.Text = "全选";
            }
        }

        private void cmdFindSelected_Click(object sender, System.EventArgs e)
        {
            System.Web.UI.WebControls.CheckBox chkExport;
            String sID;
            System.Text.StringBuilder strMsg = new System.Text.StringBuilder("选中项的City字段值分别为:<hr color=red>");
            //循环取的DataGrid控件中选定项的值
            foreach(DataGridItem oDataGridItem in DataGrid2.Items)
            {

                chkExport = (CheckBox)oDataGridItem.FindControl("checkbox");
                //如果选中了则取值
                if(chkExport.Checked)
                {
                    sID = ((Label)(oDataGridItem.FindControl("lblColumn"))).Text;
                    strMsg.Append(sID+"<br><hr color=red>");
                }
            }
            //显示选中项的值
            Label1.Text = strMsg.ToString();
        }

        private void DataGrid2_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
        {
            //取得排序表达式
            string vortExp = e.SortExpression;
            //如果是当前排序表达式
            if(ViewState["SortOrder"].ToString() == vortExp)
            {
                //如果原来是降序则改为升序,反之亦然
                if((string)ViewState["OrderDire"] == "Desc")
                    ViewState["OrderDire"] = "ASC";
                else
                    ViewState["OrderDire"] = "Desc";
            }
            else
            {
                //重新设置排序关键字
                ViewState["SortOrder"] = e.SortExpression;
            }
            BindGrid();
        }

        }
    }
原创粉丝点击