//Autohor:段小勇 //Email:web718@126.com //QQ:6532053 //严禁转载 |
<%@ 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> <asp:LinkButton id="btnPrevious" runat="server" CommandName="Previous">上一页</asp:LinkButton><FONT face="宋体"> <asp:LinkButton id="btnNext" runat="server" CommandName="Next">下一页</asp:LinkButton> <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(); } } } |
[原创]使用DataList分页显示数据,双向排序,添加checkbox控件。
最新推荐文章于 2017-11-02 18:35:24 发布