示例程序为一个超级Mini的图书管理,DB中只有一个名为"tableBook"的表,里面也只有三个字段ID(autonumber),bookName,BookAuthor。效果图:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/crazy7/1.JPG)
![](https://p-blog.csdn.net/images/p_blog_csdn_net/crazy7/3.JPG)
![](https://p-blog.csdn.net/images/p_blog_csdn_net/crazy7/6.JPG)
Main.aspx:
<%
...
@ Page Language="C#" AutoEventWireup="true" CodeFile="Main.aspx.cs" Inherits="Main"
%>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
runat
="server"
>
<
title
>
Untitled Page
</
title
>
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
<
script
type
="text/javascript"
>
...
//将当前行生成的文本框中的值存入相应的控件,并点击“修改”
function Update(id)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(confirm('确定要修改吗?'))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
document.getElementById('hiddenId').value = id;
document.getElementById('hiddenName').value = document.getElementById('newName').value;
document.getElementById('hiddenAuthor').value = document.getElementById('newAuthor').value;
document.getElementById('bnUpdate').click();
}
}
//将当前行中的ID放入hiddenId并点击“删除”
function Delete(id)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(confirm('确定要删除吗?'))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
document.getElementById('hiddenId').value = id;
document.getElementById('bnDelete').click();
}
}
//将当前行的RowIndx放入GVIndex并点击bnShowTextBox在当前行显示文本框
function ShowTextBox(gvIndex)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
document.getElementById('GVIndex').value = gvIndex;
document.getElementById('bnShowTextBox').click();
}
//点击bnShowTextBox4New,显示用于创建的控件
function ShowControl4New()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
document.getElementById('bnShowTextBox4New').click();
}
//将新建数据暂存至控件并点击“创建”
function CreateNew()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
var newName = document.getElementById('createNewName').value;
var newAuthor = document.getElementById('createNewAuthor').value;
//检查是否为空
if(newName == "" || newAuthor == "")
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
alert('不可为空');
return;
}
document.getElementById('hiddenName').value = newName;
document.getElementById('hiddenAuthor').value = newAuthor;
document.getElementById('bnCreateNew').click();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
</
script
>
</
head
>
<
body
>
<
form
id
="form1"
runat
="server"
>
<
div
>
<
table
width
="80%"
>
<
tr
>
<
td
align
="center"
>
<
asp:GridView
ID
="gvBook"
runat
="server"
CellPadding
="4"
ForeColor
="#333333"
GridLines
="None"
OnRowDataBound
="gvBook_RowDataBound"
ShowFooter
="True"
EnableViewState
="False"
OnRowCreated
="gvBook_RowCreated"
>
<
FooterStyle
BackColor
="#990000"
Font-Bold
="True"
ForeColor
="White"
/>
<
RowStyle
BackColor
="#FFFBD6"
ForeColor
="#333333"
/>
<
PagerStyle
BackColor
="#FFCC66"
ForeColor
="#333333"
HorizontalAlign
="Center"
/>
<
SelectedRowStyle
BackColor
="#FFCC66"
Font-Bold
="True"
ForeColor
="Navy"
/>
<
HeaderStyle
BackColor
="#990000"
Font-Bold
="True"
ForeColor
="White"
/>
<
AlternatingRowStyle
BackColor
="White"
/>
<
Columns
>
<
asp:TemplateField
HeaderText
="操作"
></
asp:TemplateField
>
</
Columns
>
</
asp:GridView
>
</
td
>
</
tr
>
</
table
>
</
div
>
<
input
id
="hiddenId"
style
="display:none"
type
="text"
runat
="server"
/>
<
input
id
="hiddenName"
style
="display:none"
type
="text"
runat
="server"
/>
<
input
id
="hiddenAuthor"
style
="display:none"
type
="text"
runat
="server"
/>
<
input
id
="GVIndex"
style
="display:none"
type
="text"
runat
="server"
/>
<
asp:Button
ID
="bnUpdate"
runat
="server"
style
="display:none"
Text
="Update"
OnClick
="bnUpdate_Click"
/>
<
asp:Button
ID
="bnShowTextBox"
runat
="server"
style
="display:none"
Text
="ShowTextBox"
OnClick
="bnShowTextBox_Click"
/>
<
asp:Button
ID
="bnShowTextBox4New"
runat
="server"
OnClick
="bnShowTextBox4New_Click"
Style
="display:none"
Text
="ShowTextBox4New"
/>
<
asp:Button
ID
="bnCreateNew"
runat
="server"
OnClick
="bnCreateNew_Click"
Style
="display:none"
Text
="CreateNew"
/>
<
asp:Button
ID
="bnDelete"
runat
="server"
OnClick
="bnDelete_Click"
Style
="display:none"
Text
="Delete"
/>
</
form
>
</
body
>
</
html
>
Main.aspx.cs:
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
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;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
public
partial
class
Main : System.Web.UI.Page
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
protected void Page_Load(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
GVBind();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 绑定GridView数据源
/// </summary>
protected void GVBind()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if (CBook.GetData() != null)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
gvBook.DataSource = CBook.GetData();
gvBook.DataBind();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//向各行“操作”列写入“功能键”
protected void gvBook_RowDataBound(object sender, GridViewRowEventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if (e.Row.RowType == DataControlRowType.DataRow)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
e.Row.Cells[0].Text = "<a href='JavaScript:ShowControl4New()'>新建</a> ";
e.Row.Cells[0].Text += "<a href='JavaScript:ShowTextBox(" + e.Row.RowIndex + ")'>修改</a> ";
e.Row.Cells[0].Text += "<a href='JavaScript:Delete(" + e.Row.Cells[1].Text + ")'>删除</a>";
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//显示用于修改的文本框
protected void bnShowTextBox_Click(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
int index;
if (Int32.TryParse(GVIndex.Value, out index))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
gvBook.Rows[index].Cells[2].Text = "<input id='newName' type='text' value='" + gvBook.Rows[index].Cells[2].Text + "' />";
gvBook.Rows[index].Cells[3].Text = "<input id='newAuthor' type='text' value='" + gvBook.Rows[index].Cells[3].Text + "' />";
gvBook.Rows[index].Cells[0].Text = "<a href='JavaScript:Update(" + gvBook.Rows[index].Cells[1].Text + ")'>确定</a>";
}
}
//执行修改
protected void bnUpdate_Click(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
int id;
if (Int32.TryParse(hiddenId.Value, out id) && hiddenName.Value != string.Empty && hiddenAuthor.Value != string.Empty)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
CBook.Update(id, hiddenName.Value, hiddenAuthor.Value);
CBook.ShowMessage(this, "修改成功");
GVBind();
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
CBook.ShowMessage(this, "输入有误,请检查");
}
}
catch (Exception ex)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
CBook.ShowMessage(this, ex.Message);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//显示用于创建的文本框及按钮
protected void bnShowTextBox4New_Click(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
gvBook.FooterRow.Cells[0].Text = "请输入新记录信息:";
gvBook.FooterRow.Cells[1].Text = "<input id='createNewName' type='text' size='15' />";
gvBook.FooterRow.Cells[2].Text = "<input id='createNewAuthor' type='text'size='15' /> <input id='createNew' type='button' οnclick='CreateNew()' value='确定' />";
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//执行创建
protected void bnCreateNew_Click(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
CBook.Insert(hiddenName.Value, hiddenAuthor.Value);
CBook.ShowMessage(this, "创建成功");
GVBind();
}
catch(Exception ex)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
CBook.ShowMessage(this, ex.Message);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//执行删除
protected void bnDelete_Click(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
int id;
if (Int32.TryParse(hiddenId.Value, out id))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
CBook.Delete(id);
CBook.ShowMessage(this, "删除成功");
GVBind();
}
}
catch (Exception ex)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
CBook.ShowMessage(this, ex.Message);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//隐藏ID列
protected void gvBook_RowCreated(object sender, GridViewRowEventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
e.Row.Cells[1].Visible = false;
}
}
}
CBook.cs:
using
System;
using
System.Data;
using
System.Data.OleDb;
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;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
/// <summary>
/// Summary description for CBook
/// </summary>
public
class
CBook
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// DB连接字符串
/// </summary>
private static string connString = System.Configuration.ConfigurationManager.AppSettings["provider"].ToString()
+ System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + ";";
public CBook()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
//
// TODO: Add constructor logic here
//
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// Execute sql NonQuery(insert,delete,update)
/// </summary>
/// <param name="sql">sql</param>
/// <param name="parameters">OleDbParameter数组</param>
private static void ExeNonQuery(string sql, OleDbParameter[] parameters)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
OleDbConnection conn = new OleDbConnection(connString);
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
conn.Open();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
OleDbCommand cmd = new OleDbCommand(sql, conn);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
cmd.Parameters.AddRange(parameters);
cmd.ExecuteNonQuery();
}
catch
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
throw;
}
finally
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
conn.Close();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 修改
/// </summary>
public static void Update(int id, string bookName, string author)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
string sql = "update tableBook set BookName=@bookName,BookAuthor=@author where ID=@id";
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
OleDbParameter[] parameters = new OleDbParameter[3];
parameters[0] = new OleDbParameter("@bookName", bookName);
parameters[1] = new OleDbParameter("@author", author);
parameters[2] = new OleDbParameter("@id", id);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
ExeNonQuery(sql, parameters);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 插入
/// </summary>
public static void Insert(string bookName, string author)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
string sql = "insert into tableBook (bookName,BookAuthor)values(@bookName,@author)";
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
OleDbParameter[] parameters = new OleDbParameter[2];
parameters[0] = new OleDbParameter("@bookName", bookName);
parameters[1] = new OleDbParameter("@author", author);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
ExeNonQuery(sql, parameters);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
public static void Delete(int id)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
string sql = "delete from tableBook where ID=@id";
OleDbParameter paraID = new OleDbParameter("@id", id);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
ExeNonQuery(sql, new OleDbParameter[] ...{ paraID });
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 返回DB中所有数据
/// </summary>
/// <returns></returns>
public static DataTable GetData()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
OleDbConnection conn = new OleDbConnection(connString);
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
conn.Open();
string sql = "select * from tableBook";
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);
DataSet ds = new DataSet();
adapter.Fill(ds, "bookTable");
DataTable dt = ds.Tables[0];
return dt;
}
catch
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
throw;
return null;
}
finally
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
conn.Close();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public static void ShowMessage(Page page, string msgInfo)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
page.Response.Write("<script>alert('" + msgInfo + "')</script>");
}
}