分页是数据库类的重要程序之一, 分页对于大数据量的往往需要用到存贮过程。这个研究网上也有不少,而本文的则是普通的SQL语句的分页程序。Oracle的操作在.net下不同与MS SQL,所以使用的是DataSet填充GridView来实现。程序包含通常使用的功能:
Oracle驱动为微软提供的,可以参考前面几篇文章获取完整说明。
1 分页
2 首页,上一页,下一页,尾页,第?页,共?页,记录数 跳转功能
3 页面显示的隔行不同色,并且提供了鼠标经过时当前行变化颜色的功能
4 选择某一列
5 删除选定列,并提示确认删除信息
6 更新选定列
7 对列进行排序(升/降)
运行效果图:不能贴图,所拷贝了一下,效果不是很好,但是大体上可以看明白了。
建立过程如下:
新建页面:
添加相关的GridView控件和LinkButton等。
我的GridView选择AllowPaging = true(允许分页); AllowSort = true(允许排序);<AlternatingRowStyle BackColor="LightSteelBlue" />(行颜色切换);AutoGenerateColumns=true(自动产生列表);等等
详细的可以参考下面的代码部分。比如添加AutoGenerateSelect,AutoGenerateEdit,AutoGenerateDelete等。
这里的AutoGenerateDelete方式有部分改变,你可以参考代码修改。然后就是添加相应的事件进行处理,在cs文件里可以参考。
文中的Javascript是用来鼠标经过该记录时高亮显示以示区别的。
2 处理程序部分:
测试通过。
使用其他表查询时只要更换SQL语句即可。
对于鼠标悬停时可以用如下代码修改而不需要上面的javascript:
//当鼠标移到的时候设置该行颜色为"", 并保存原来的背景颜色
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#FF8000'");
//当鼠标移走时还原该行的背景色
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
当然程序还有很多不足,但是这个也是我的一个测试程序。大家继续改进。
Oracle驱动为微软提供的,可以参考前面几篇文章获取完整说明。
1 分页
2 首页,上一页,下一页,尾页,第?页,共?页,记录数 跳转功能
3 页面显示的隔行不同色,并且提供了鼠标经过时当前行变化颜色的功能
4 选择某一列
5 删除选定列,并提示确认删除信息
6 更新选定列
7 对列进行排序(升/降)
运行效果图:不能贴图,所拷贝了一下,效果不是很好,但是大体上可以看明白了。
建立过程如下:
新建页面:
添加相关的GridView控件和LinkButton等。
我的GridView选择AllowPaging = true(允许分页); AllowSort = true(允许排序);<AlternatingRowStyle BackColor="LightSteelBlue" />(行颜色切换);AutoGenerateColumns=true(自动产生列表);等等
详细的可以参考下面的代码部分。比如添加AutoGenerateSelect,AutoGenerateEdit,AutoGenerateDelete等。
这里的AutoGenerateDelete方式有部分改变,你可以参考代码修改。然后就是添加相应的事件进行处理,在cs文件里可以参考。
文中的Javascript是用来鼠标经过该记录时高亮显示以示区别的。
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Default.aspx.cs
"
Inherits
=
"
_Default
"
%>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< script language = " javascript " type = " text/javascript " >
if ( ! objbeforeItem)
{
var objbeforeItem=null;
var objbeforeItembackgroundColor=null;
}
function ItemOver(obj)
{
if(objbeforeItem)
{
objbeforeItem.style.backgroundColor = objbeforeItembackgroundColor;
}
objbeforeItembackgroundColor = obj.style.backgroundColor;
objbeforeItem = obj;
obj.style.backgroundColor = "#FF8000";
}
</ script >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
< title > 分页测试程序 </ title >
</ head >
< body >
< form id = " form1 " runat = " server " >
< div >
& nbsp; & nbsp;
< asp:GridView ID = " GridView1 " runat = " server " AllowPaging = " True " AllowSorting = " True " OnSorting = " GridView1_Sorting " AutoGenerateEditButton = " True " OnRowCancelingEdit = " GridView1_RowCancelingEdit " OnRowEditing = " GridView1_RowEditing " OnRowUpdating = " GridView1_RowUpdating " AutoGenerateSelectButton = " True " OnRowDataBound = " GridView1_RowDataBound " OnSelectedIndexChanging = " GridView1_SelectedIndexChanging " OnRowDeleting = " GridView1_RowDeleting " >
< AlternatingRowStyle BackColor = " LightSteelBlue " />
< PagerSettings Visible = " False " />
< Columns >
< asp:TemplateField ShowHeader = " False " >
< ItemTemplate >
< asp:LinkButton ID = " LnkbtnDel " runat = " server " CommandName = " Delete " Text = " 删除 " OnClientClick = " return confirm('确认要删除吗?'); " Width = " 40px " ></ asp:LinkButton >
</ ItemTemplate >
</ asp:TemplateField >
</ Columns >
</ asp:GridView >
< asp:LinkButton ID = " lnkbtnFirst " runat = " server " OnClick = " PagerButtonClick " > 首页 </ asp:LinkButton >< asp:LinkButton ID = " lnkbtnPre " runat = " server " OnClick = " PagerButtonClick " > 上一页 </ asp:LinkButton >
< asp:LinkButton ID = " lnkbtnNext " runat = " server " OnClick = " PagerButtonClick " > 下一页 </ asp:LinkButton >
< asp:LinkButton ID = " lnkbtnLast " runat = " server " OnClick = " PagerButtonClick " > 尾页 </ asp:LinkButton >
< asp:Label ID = " lblCurrentIndex " runat = " server " Text = " 第?页 " ></ asp:Label >
< asp:Label ID = " lblPageCount " runat = " server " Text = " 共?页 " ></ asp:Label >
< asp:Label ID = " lblRecordCount " runat = " server " Text = " 记录数 " ></ asp:Label >
< asp:TextBox ID = " txtJumpPage " runat = " server " Width = " 24px " > 1 </ asp:TextBox >
< asp:LinkButton ID = " lnkbtnJumpPage " runat = " server " OnClick = " lnkbtnJumpPage_Click " > 跳转 </ asp:LinkButton ></ div >
</ form >
</ body >
</ html >
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< script language = " javascript " type = " text/javascript " >
if ( ! objbeforeItem)
{
var objbeforeItem=null;
var objbeforeItembackgroundColor=null;
}
function ItemOver(obj)
{
if(objbeforeItem)
{
objbeforeItem.style.backgroundColor = objbeforeItembackgroundColor;
}
objbeforeItembackgroundColor = obj.style.backgroundColor;
objbeforeItem = obj;
obj.style.backgroundColor = "#FF8000";
}
</ script >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
< title > 分页测试程序 </ title >
</ head >
< body >
< form id = " form1 " runat = " server " >
< div >
& nbsp; & nbsp;
< asp:GridView ID = " GridView1 " runat = " server " AllowPaging = " True " AllowSorting = " True " OnSorting = " GridView1_Sorting " AutoGenerateEditButton = " True " OnRowCancelingEdit = " GridView1_RowCancelingEdit " OnRowEditing = " GridView1_RowEditing " OnRowUpdating = " GridView1_RowUpdating " AutoGenerateSelectButton = " True " OnRowDataBound = " GridView1_RowDataBound " OnSelectedIndexChanging = " GridView1_SelectedIndexChanging " OnRowDeleting = " GridView1_RowDeleting " >
< AlternatingRowStyle BackColor = " LightSteelBlue " />
< PagerSettings Visible = " False " />
< Columns >
< asp:TemplateField ShowHeader = " False " >
< ItemTemplate >
< asp:LinkButton ID = " LnkbtnDel " runat = " server " CommandName = " Delete " Text = " 删除 " OnClientClick = " return confirm('确认要删除吗?'); " Width = " 40px " ></ asp:LinkButton >
</ ItemTemplate >
</ asp:TemplateField >
</ Columns >
</ asp:GridView >
< asp:LinkButton ID = " lnkbtnFirst " runat = " server " OnClick = " PagerButtonClick " > 首页 </ asp:LinkButton >< asp:LinkButton ID = " lnkbtnPre " runat = " server " OnClick = " PagerButtonClick " > 上一页 </ asp:LinkButton >
< asp:LinkButton ID = " lnkbtnNext " runat = " server " OnClick = " PagerButtonClick " > 下一页 </ asp:LinkButton >
< asp:LinkButton ID = " lnkbtnLast " runat = " server " OnClick = " PagerButtonClick " > 尾页 </ asp:LinkButton >
< asp:Label ID = " lblCurrentIndex " runat = " server " Text = " 第?页 " ></ asp:Label >
< asp:Label ID = " lblPageCount " runat = " server " Text = " 共?页 " ></ asp:Label >
< asp:Label ID = " lblRecordCount " runat = " server " Text = " 记录数 " ></ asp:Label >
< asp:TextBox ID = " txtJumpPage " runat = " server " Width = " 24px " > 1 </ asp:TextBox >
< asp:LinkButton ID = " lnkbtnJumpPage " runat = " server " OnClick = " lnkbtnJumpPage_Click " > 跳转 </ asp:LinkButton ></ div >
</ form >
</ body >
</ html >
2 处理程序部分:
using
System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OracleClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
fillGridView();
}
}
/// <summary>
/// 填充GridView
/// </summary>
protected void fillGridView()
{
DataSet ds = new DataSet();
ds = GetData();
// 将ds作为GridView的数据源
GridView1.DataSource = ds;
// 绑定数据
GridView1.DataBind();
getRefSet(ds);
}
/// <summary>
/// 分页的相关参数设置
/// </summary>
/// <param name="ds"></param>
protected void getRefSet(DataSet ds)
{
lblCurrentIndex.Text = "第 " + (GridView1.PageIndex + 1).ToString() + " 页";
lblPageCount.Text = "共 " + GridView1.PageCount.ToString() + " 页";
lblRecordCount.Text = "总共 " + ds.Tables[0].Rows.Count.ToString() + " 条";
if (ds.Tables[0].Rows.Count == 0)
{
lnkbtnFirst.Visible = false;
lnkbtnPre.Visible = false;
lnkbtnNext.Visible = false;
lnkbtnLast.Visible = false;
lblCurrentIndex.Visible = false;
lblPageCount.Visible = false;
lblRecordCount.Visible = false;
}
else if (GridView1.PageCount == 1)
{
lnkbtnFirst.Visible = false;
lnkbtnPre.Visible = false;
lnkbtnNext.Visible = false;
lnkbtnLast.Visible = false;
}
// 设置LinkButton此时对应的参数
lnkbtnFirst.CommandArgument = "1";
lnkbtnPre.CommandArgument = (GridView1.PageIndex == 0 ? "1" : GridView1.PageIndex.ToString());
lnkbtnNext.CommandArgument = (GridView1.PageCount == 1 ? GridView1.PageCount.ToString() : (GridView1.PageIndex + 2).ToString());
lnkbtnLast.CommandArgument = GridView1.PageCount.ToString();
}
/// <summary>
/// 跳转到指定页面,页面参数由txtJumpPage获取
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lnkbtnJumpPage_Click(object sender, EventArgs e)
{
// 减1 是因为系统默认首页的PageIndex为0,为了符合人们的正常思维而使用
GridView1.PageIndex = int.Parse(txtJumpPage.Text) - 1;
// 更新当前页面显示值
lblCurrentIndex.Text = "第 " + (GridView1.PageIndex + 1).ToString() + " 页";
// 重新绑定
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 首页,上一页,下一页,尾页公用的点击程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void PagerButtonClick(object sender, EventArgs e)
{
// CommandArgument对应该对象在页面初始化后的设定值
GridView1.PageIndex = Convert.ToInt32(((LinkButton)sender).CommandArgument) - 1;
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 设置排序方式
/// </summary>
public SortDirection GridViewSortDirection
{
get
{
if (ViewState["sortDirection"] == null)
{
ViewState["sortDirection"] = SortDirection.Ascending;
}
return (SortDirection)ViewState["sortDirection"];
}
set { ViewState["sortDirection"] = value; }
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression;
// 必须有一个空格"Desc"不行
string Desc = " Desc";
string Asc = " Asc";
if (GridViewSortDirection == SortDirection.Ascending)
{
GridViewSortDirection = SortDirection.Descending;
SortGridView(sortExpression,Desc);
}
else
{
GridViewSortDirection = SortDirection.Ascending;
SortGridView(sortExpression, Asc);
}
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sortExpression"></param>
/// <param name="direction">排序方式</param>
private void SortGridView(string sortExpression, string direction)
{
DataTable dt = GetData().Tables[0];
DataView dv = new DataView(dt);
dv.Sort = sortExpression + direction;
GridView1.DataSource = dv;
GridView1.DataBind();
}
/// <summary>
/// 转换SQL查询结果为DataSet
/// </summary>
/// <returns>ds</returns>
private DataSet GetData()
{
OracleConnection conn = new OracleConnection("Data Source=INFOPLAT;User ID=system;Password=manager;");
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
String strSql = "select * from hr.employees";
cmd.CommandText = strSql;
cmd.CommandType = CommandType.Text;
// 创建数据集
DataSet ds = new DataSet();
try
{
conn.Open();
// 创建适配器
OracleDataAdapter ad = new OracleDataAdapter();
// 适配器命令
ad.SelectCommand = cmd;
// 填充到数据集(DataSet)
ad.Fill(ds);
}
catch (Exception ex)
{
Response.Write("数据库错误,错误原因:" + ex.Message);
Response.End();
}
finally
{
// 释放占有资源
conn.Close();
}
return ds;
}
/// <summary>
/// 编辑行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 取消更新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 更新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// Cells[2]是因为前面有2列,并且最好需要id为主键。
string id = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
string newtxt = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
string strSql1 = "UPDATE hr.employees SET first_name ='" + newtxt + "' WHERE employee_id =" + id;
OracleConnection conn = new OracleConnection("Data Source=INFOPLAT;User ID=system;Password=manager;");
OracleCommand cmd = new OracleCommand();
cmd.CommandText = strSql1;
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
GridView1.EditIndex = -1;
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 鼠标经过时改变当前行的颜色
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
// 调用javascript
e.Row.Attributes["onmouseover"] = "ItemOver(this)";
}
/// <summary>
/// 选择行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
// Cells[2]是因为前面有2列,并且最好需要id为主键。
string id = GridView1.Rows[e.NewSelectedIndex].Cells[2].Text;
Response.Write(id);
// 自己的处理代码
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 删除行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
// Cells[2]是因为前面有2列,并且最好需要id为主键。
string id = GridView1.Rows[e.RowIndex].Cells[2].Text;
string strSql1 = "DELETE FROM hr.employees WHERE employee_id =" + id;
OracleConnection conn = new OracleConnection("Data Source=INFOPLAT;User ID=system;Password=manager;");
OracleCommand cmd = new OracleCommand();
cmd.CommandText = strSql1;
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
}
finally
{
conn.Close();
}
GridView1.EditIndex = -1;
fillGridView();
GridView1.DataBind();
}
}
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OracleClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
fillGridView();
}
}
/// <summary>
/// 填充GridView
/// </summary>
protected void fillGridView()
{
DataSet ds = new DataSet();
ds = GetData();
// 将ds作为GridView的数据源
GridView1.DataSource = ds;
// 绑定数据
GridView1.DataBind();
getRefSet(ds);
}
/// <summary>
/// 分页的相关参数设置
/// </summary>
/// <param name="ds"></param>
protected void getRefSet(DataSet ds)
{
lblCurrentIndex.Text = "第 " + (GridView1.PageIndex + 1).ToString() + " 页";
lblPageCount.Text = "共 " + GridView1.PageCount.ToString() + " 页";
lblRecordCount.Text = "总共 " + ds.Tables[0].Rows.Count.ToString() + " 条";
if (ds.Tables[0].Rows.Count == 0)
{
lnkbtnFirst.Visible = false;
lnkbtnPre.Visible = false;
lnkbtnNext.Visible = false;
lnkbtnLast.Visible = false;
lblCurrentIndex.Visible = false;
lblPageCount.Visible = false;
lblRecordCount.Visible = false;
}
else if (GridView1.PageCount == 1)
{
lnkbtnFirst.Visible = false;
lnkbtnPre.Visible = false;
lnkbtnNext.Visible = false;
lnkbtnLast.Visible = false;
}
// 设置LinkButton此时对应的参数
lnkbtnFirst.CommandArgument = "1";
lnkbtnPre.CommandArgument = (GridView1.PageIndex == 0 ? "1" : GridView1.PageIndex.ToString());
lnkbtnNext.CommandArgument = (GridView1.PageCount == 1 ? GridView1.PageCount.ToString() : (GridView1.PageIndex + 2).ToString());
lnkbtnLast.CommandArgument = GridView1.PageCount.ToString();
}
/// <summary>
/// 跳转到指定页面,页面参数由txtJumpPage获取
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lnkbtnJumpPage_Click(object sender, EventArgs e)
{
// 减1 是因为系统默认首页的PageIndex为0,为了符合人们的正常思维而使用
GridView1.PageIndex = int.Parse(txtJumpPage.Text) - 1;
// 更新当前页面显示值
lblCurrentIndex.Text = "第 " + (GridView1.PageIndex + 1).ToString() + " 页";
// 重新绑定
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 首页,上一页,下一页,尾页公用的点击程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void PagerButtonClick(object sender, EventArgs e)
{
// CommandArgument对应该对象在页面初始化后的设定值
GridView1.PageIndex = Convert.ToInt32(((LinkButton)sender).CommandArgument) - 1;
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 设置排序方式
/// </summary>
public SortDirection GridViewSortDirection
{
get
{
if (ViewState["sortDirection"] == null)
{
ViewState["sortDirection"] = SortDirection.Ascending;
}
return (SortDirection)ViewState["sortDirection"];
}
set { ViewState["sortDirection"] = value; }
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression;
// 必须有一个空格"Desc"不行
string Desc = " Desc";
string Asc = " Asc";
if (GridViewSortDirection == SortDirection.Ascending)
{
GridViewSortDirection = SortDirection.Descending;
SortGridView(sortExpression,Desc);
}
else
{
GridViewSortDirection = SortDirection.Ascending;
SortGridView(sortExpression, Asc);
}
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sortExpression"></param>
/// <param name="direction">排序方式</param>
private void SortGridView(string sortExpression, string direction)
{
DataTable dt = GetData().Tables[0];
DataView dv = new DataView(dt);
dv.Sort = sortExpression + direction;
GridView1.DataSource = dv;
GridView1.DataBind();
}
/// <summary>
/// 转换SQL查询结果为DataSet
/// </summary>
/// <returns>ds</returns>
private DataSet GetData()
{
OracleConnection conn = new OracleConnection("Data Source=INFOPLAT;User ID=system;Password=manager;");
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
String strSql = "select * from hr.employees";
cmd.CommandText = strSql;
cmd.CommandType = CommandType.Text;
// 创建数据集
DataSet ds = new DataSet();
try
{
conn.Open();
// 创建适配器
OracleDataAdapter ad = new OracleDataAdapter();
// 适配器命令
ad.SelectCommand = cmd;
// 填充到数据集(DataSet)
ad.Fill(ds);
}
catch (Exception ex)
{
Response.Write("数据库错误,错误原因:" + ex.Message);
Response.End();
}
finally
{
// 释放占有资源
conn.Close();
}
return ds;
}
/// <summary>
/// 编辑行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 取消更新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 更新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// Cells[2]是因为前面有2列,并且最好需要id为主键。
string id = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
string newtxt = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
string strSql1 = "UPDATE hr.employees SET first_name ='" + newtxt + "' WHERE employee_id =" + id;
OracleConnection conn = new OracleConnection("Data Source=INFOPLAT;User ID=system;Password=manager;");
OracleCommand cmd = new OracleCommand();
cmd.CommandText = strSql1;
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
GridView1.EditIndex = -1;
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 鼠标经过时改变当前行的颜色
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
// 调用javascript
e.Row.Attributes["onmouseover"] = "ItemOver(this)";
}
/// <summary>
/// 选择行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
// Cells[2]是因为前面有2列,并且最好需要id为主键。
string id = GridView1.Rows[e.NewSelectedIndex].Cells[2].Text;
Response.Write(id);
// 自己的处理代码
fillGridView();
GridView1.DataBind();
}
/// <summary>
/// 删除行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
// Cells[2]是因为前面有2列,并且最好需要id为主键。
string id = GridView1.Rows[e.RowIndex].Cells[2].Text;
string strSql1 = "DELETE FROM hr.employees WHERE employee_id =" + id;
OracleConnection conn = new OracleConnection("Data Source=INFOPLAT;User ID=system;Password=manager;");
OracleCommand cmd = new OracleCommand();
cmd.CommandText = strSql1;
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
}
finally
{
conn.Close();
}
GridView1.EditIndex = -1;
fillGridView();
GridView1.DataBind();
}
}
测试通过。
使用其他表查询时只要更换SQL语句即可。
对于鼠标悬停时可以用如下代码修改而不需要上面的javascript:
//当鼠标移到的时候设置该行颜色为"", 并保存原来的背景颜色
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#FF8000'");
//当鼠标移走时还原该行的背景色
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
/// <summary>
/// 鼠标经过时改变当前行的颜色
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound( object sender, GridViewRowEventArgs e)
{
//当鼠标移到的时候设置该行颜色为"", 并保存原来的背景颜色
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#FF8000'");
//当鼠标移走时还原该行的背景色
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
}
/// 鼠标经过时改变当前行的颜色
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound( object sender, GridViewRowEventArgs e)
{
//当鼠标移到的时候设置该行颜色为"", 并保存原来的背景颜色
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#FF8000'");
//当鼠标移走时还原该行的背景色
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
}
当然程序还有很多不足,但是这个也是我的一个测试程序。大家继续改进。