您的位置:首页 > 其它

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();
}

}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐