DATAGRID的应用(双向排序,包括checkbox控件,分页,修改,保存,取消)
2005-11-13 00:15
453 查看
<%@ Page language="c#" Codebehind="DataGridControls.aspx.cs" AutoEventWireup="false" Inherits="News.DataGridControls" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>DataGridControls</title> <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="DataGridControls" method="post" runat="server"> <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0"> <TR> <TD> <asp:DataGrid id="DataGrid1" DataKeyField="id" 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:TemplateColumn HeaderText="ID号"> <ItemTemplate> <asp:Label id=lblColumn runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.id") %>'> </asp:Label> </ItemTemplate> </asp:TemplateColumn> <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:TemplateColumn HeaderText="Email" SortExpression="email"> <ItemTemplate> <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.email") %>' ID="Label3" NAME="Label3"> </asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox runat="server" ID="txtEmail" Text='<%# DataBinder.Eval(Container, "DataItem.email") %>'> </asp:TextBox> </EditItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="管理员" SortExpression="IsManager"> <ItemTemplate> <asp:Label id="Label4" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.IsManager") %>'> </asp:Label> </ItemTemplate> <EditItemTemplate> <asp:DropDownList id="DropDown1" runat="server"> <asp:ListItem>是</asp:ListItem> <asp:ListItem>否</asp:ListItem> </asp:DropDownList> </EditItemTemplate> </asp:TemplateColumn> <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="<img src=images/save.gif border=0 alt='保存'/>" CancelText="<img src=images/cancel.gif border=0 alt='取消'/>" EditText="<img src=images/edit.gif border=0 alt='编辑'/>"></asp:EditCommandColumn> </Columns> <PagerStyle HorizontalAlign="Right" ForeColor="#003399" BackColor="#99CCCC" Mode="NumericPages"></PagerStyle> </asp:DataGrid></TD> </TR> <TR> <TD> <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" Columns="2" MaxLength="2"></asp:TextBox> <asp:Button id="btnGo" runat="server" BorderColor="Silver" BorderStyle="Solid" BorderWidth="1px" BackColor="Gainsboro" Text="Go!"></asp:Button> <asp:Label id="lblError" runat="server" ForeColor="Red" Visible="False">No that page!</asp:Label></FONT></asp:panel> </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.Data.SqlClient; using System.Configuration; namespace News { /// <summary> /// DataGridControls 的摘要说明。 /// </summary> public class DataGridControls : System.Web.UI.Page { protected System.Web.UI.WebControls.DataGrid DataGrid1; protected System.Web.UI.WebControls.Label lblPageCount; protected System.Web.UI.WebControls.Label lblCurrentIndex; protected System.Web.UI.WebControls.LinkButton btnFirst; protected System.Web.UI.WebControls.LinkButton btnPrevious; protected System.Web.UI.WebControls.LinkButton btnNext; protected System.Web.UI.WebControls.LinkButton btnEnd; 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.Button cmdSelectAll; protected System.Web.UI.WebControls.Button cmdFindSelected; protected System.Web.UI.WebControls.Panel pnlIndex; protected System.Web.UI.WebControls.Label Label1; //连接数据库config string ConnectionStr=ConfigurationSettings.AppSettings["connStr"]; private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if(!IsPostBack) { //设置排序表达式 ViewState["SortOrder"] = "id"; //设置排序的升降序 ViewState["OrderDire"] = "ASC"; BindDataGrid(); } } //数据库绑定 private void BindDataGrid() { //定义数据连接对象,其中数据库连接字符串是在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; //进行数据绑定 DataGrid1.DataSource=view; DataGrid1.DataBind(); } catch(Exception error) { Response.Write(error.ToString()); } finally{} } #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.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged); this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand); this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand); this.DataGrid1.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.DataGrid1_SortCommand); this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand); 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 DataGrid1_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; } BindDataGrid(); } private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { //设置DataGrid当前页的索引值为用户选择的页的索引 DataGrid1.CurrentPageIndex = e.NewPageIndex; //重新绑定数据 BindDataGrid(); //显示当前分页信息 ShowStats(); } //显示当前分页信息 private void ShowStats() { //显示当前页面是第几页 lblCurrentIndex.Text = "第 " + (DataGrid1.CurrentPageIndex + 1).ToString() + " 页"; //显示总页数 lblPageCount.Text = "总共 " + DataGrid1.PageCount.ToString() + " 页"; } //翻页效果 private void NavigationButtonClick(object sender, System.EventArgs e) { string direction=((LinkButton)sender).CommandName; switch(direction.ToUpper()) { case "PREVIOUS": //如果当前页不是首页 if (DataGrid1.CurrentPageIndex > 0) { //设置DataGrid控件的当前页索引为上一页面 DataGrid1.CurrentPageIndex -= 1; } break; case "NEXT": if (DataGrid1.CurrentPageIndex < (DataGrid1.PageCount - 1)) { //设置DataGrid控件的当前页索引为下一页面 DataGrid1.CurrentPageIndex += 1; } break; case "END": DataGrid1.CurrentPageIndex = (DataGrid1.PageCount - 1); break; default: DataGrid1.CurrentPageIndex = 0; break; } BindDataGrid(); 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<=DataGrid1.PageCount) { try { DataGrid1.CurrentPageIndex=Math.Min(DataGrid1.PageCount,pageIndex-1); BindDataGrid(); ShowStats(); } catch { lblError.Visible=true; } finally { lblError.Visible=false; } } else { lblError.Visible=true; } } private void cmdSelectAll_Click(object sender, System.EventArgs e) { System.Web.UI.WebControls.CheckBox checkbox; //如果要全选 if(cmdSelectAll.Text == "全选") { //循环设置DataGrid控件中的项 foreach(DataGridItem oDataGridItem in DataGrid1.Items) { //建立模板列中CheckBox控件的引用 checkbox = (CheckBox)oDataGridItem.FindControl("checkbox"); //选中 checkbox.Checked =true; } cmdSelectAll.Text = "全消"; } else { foreach(DataGridItem oDataGridItem in DataGrid1.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 DataGrid1.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 DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { //加载checklist的值 //设置DataGrid控件的编辑项的索引为选择的当前项 DataGrid1.EditItemIndex = e.Item.ItemIndex; //数据绑定 BindDataGrid(); } private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { //取得编辑行的关键字段的值 int empID=(int)DataGrid1.DataKeys[e.Item.ItemIndex]; //取得文本框中输入的内容 TextBox newEmail = (TextBox)e.Item.FindControl("txtEmail"); DropDownList newIsManager=(DropDownList)e.Item.FindControl("DropDown1"); //定义SQL语句 string sqlCom = "update user_info set email='" + newEmail.Text + "',IsManager='"+newIsManager.SelectedItem.Text+"' where id="+empID.ToString(); //定义数据连接对象,其中数据库连接字符串是在Web.Config文件中定义的 SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["connStr"].ToString()); //定义命令对象 SqlCommand cmd = new SqlCommand(sqlCom,conn); //打开数据连接 conn.Open(); try { //执行SQL命令 cmd.ExecuteNonQuery(); //取消编辑 DataGrid1.EditItemIndex = -1; BindDataGrid(); } catch(Exception err) { //输出异常信息 Response.Write(err.ToString()); } finally { //关闭连接对象 conn.Close(); } } private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { //设置DataGrid控件的编辑项的索引为-1,既取消编辑 DataGrid1.EditItemIndex = -1; //数据绑定 BindDataGrid(); } } } |
相关文章推荐
- [原创]DATAGRID的应用(双向排序,包括checkbox控件,分页,修改,保存,取消)
- 使用DataList分页显示数据,双向排序,添加checkbox控件。
- [原创]使用DataList分页显示数据,双向排序,添加checkbox控件。
- 使用DataList分页显示数据,双向排序,添加checkbox控件
- datagrid的几点简单应用,功能包括radio的单选,checkbox的多选,鼠标移动到行上颜色变深,链接传递多参数等功能。这里radio和checkbox都使用的是HTML控件。
- GridView控件修改、删除、分页、排序示例(修改含有DropDownList控件)
- GridView操作大全 无代码分页排序 正反双向排序 和下拉菜单DropDownList结合,选中,编辑,取消,删除
- BOS项目练习3(修复window控件BUG,添加/修改/作废取派员,datagrid使用,分页查询(DetachedCriteria离线),formatter函数)
- DataList分页,保存CheckBox控件状态
- GridView操作大全 无代码分页排序 正反双向排序 和下拉菜单DropDownList结合,选中,编辑,取消,删除
- 使用DataGrid数据修改,保存,取消
- 综合应用WPF/WCF/WF/LINQ之四十:实现一个简单的DataGrid之CheckBox已勾选的项的保存
- 框架 day49 BOS项目练习3(修复window控件BUG,添加/修改/作废取派员,datagrid使用,分页查询(DetachedCriteria离线),formatter函数)
- 实现控件DataGrid的双向排序
- 用存储过程实现分页/实现手动排序/checkbox控件
- DataGrid 切换数据源,修改表头,排序,分页,导出
- [Asp.Net]GridView无代码分页排序,选中,编辑,取消,删除,正反双向排序,下拉菜单DropDownList结合
- ASP.NET 2.0中的友好CSS控件适配器的应用 - 用ul、li呈现CheckBoxList和RadioButtonList
- GridView编辑,更新,取消,排序,全选及存储过程分页
- 牛腩购物32:完成整个网站的功能制作(后台产品列表,多表查询+分页),产品修改保存,图片的上传保存