using System;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Web.UI.WebControls;
public partial class PageSaveData : System.Web.UI.Page
{
#region Page_Load
private static DataView dataView;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dataView = UserSchema.UserTable.AsDataView();
gridViewDB.DataSource = dataView;
gridViewDB.DataBind();
gridViewDB.Caption = Session["Title"] as string;
}
Page.Title = gridViewDB.Caption;
}
#endregion
#region location.href
protected void btnBack_Click(object sender, EventArgs e)
{
Response.Write("<script>window.top.location.href='PageLoadData.aspx'</script>");
}
#endregion
#region PrintToExcel
protected void btnExcel_Click(object sender, EventArgs e)
{
dataView.ToTable().PrintToExcel(gridViewDB.Caption, "用户名", "电子邮件", "内容", "时间");
}
#endregion
#region RowDataBound
protected void gridViewDB_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "bgColor=this.style.backgroundColor;this.style.backgroundColor='violet';this.style.cursor='hand';");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=bgColor");
string value = string.Format("return confirm('确实要删除编号“{0}”吗?');", e.Row.Cells[1].Text);
e.Row.Cells[5].Attributes.Add("OnClick", value);
}
}
#endregion
#region CheckedAll
protected void checkedAll_CheckedChanged(object sender, EventArgs e)
{
bool checkedAll = (gridViewDB.HeaderRow.FindControl("checkedAll") as CheckBox).Checked;
foreach (GridViewRow row in gridViewDB.Rows)
{
(row.FindControl("checkedItem") as CheckBox).Checked = checkedAll;
}
(gridViewDB.HeaderRow.FindControl("linkButtonAll") as LinkButton).Enabled = checkedAll;
}
protected void linkButtonAll_Click(object sender, EventArgs e)
{
dataView.Table.Clear();
gridViewDB.DataSource = dataView;
gridViewDB.DataBind();
}
#endregion
#region GridView.Events
protected void gridViewDB_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gridViewDB.PageIndex = e.NewPageIndex;
gridViewDB.DataSource = dataView;
gridViewDB.DataBind();
}
protected void gridViewDB_RowEditing(object sender, GridViewEditEventArgs e)
{
gridViewDB.EditIndex = e.NewEditIndex;
gridViewDB.DataSource = dataView;
gridViewDB.DataBind();
}
protected void gridViewDB_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gridViewDB.EditIndex = -1;
gridViewDB.DataSource = dataView;
gridViewDB.DataBind();
}
#endregion
#region UpdateRow
protected void gridViewDB_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
if (dataView.Count < 0)
{
e.Cancel = true;
return;
}
DataRow updateRow = dataView[gridViewDB.Rows[e.RowIndex].DataItemIndex].Row;
try
{
updateRow.BeginEdit();
GridViewRow row = gridViewDB.Rows[e.RowIndex];
updateRow.SetField<string>("UserEmail", (row.FindControl("UserEmail") as TextBox).Text);
updateRow.SetField<string>("Content", (row.FindControl("Content") as TextBox).Text);
updateRow.SetField<DateTime>("SendTime", (row.FindControl("SendTime") as Calendar).SelectedDate);
updateRow.EndEdit();
btnSave.Enabled = true;
}
catch (Exception se)
{
Response.Write(se.Message);
updateRow.ClearErrors();
updateRow.CancelEdit();
}
finally
{
gridViewDB.EditIndex = -1;
gridViewDB.DataSource = dataView;
gridViewDB.DataBind();
}
}
protected void gridViewDB_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
if (e.Exception != null)
{
Response.Write(e.Exception.Message);
e.ExceptionHandled = true;
}
}
#endregion
#region DeleteRow
protected void gridViewDB_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
if (dataView.Count < 0)
{
e.Cancel = true;
return;
}
DataRow deleteRow = dataView[gridViewDB.Rows[e.RowIndex].DataItemIndex].Row;
try
{
deleteRow.Delete();
btnSave.Enabled = true;
}
catch (Exception se)
{
Response.Write(se.Message);
deleteRow.ClearErrors();
deleteRow.RejectChanges();
}
finally
{
gridViewDB.DataSource = dataView;
gridViewDB.DataBind();
}
}
protected void gridViewDB_RowDeleted(object sender, GridViewDeletedEventArgs e)
{
if (e.Exception != null)
{
Response.Write(e.Exception.Message);
e.ExceptionHandled = true;
}
}
#endregion
#region SavaData
protected void btnSave_Click(object sender, EventArgs e)
{
switch (gridViewDB.Caption)
{
case "XML数据库":
FileInfo info = new FileInfo(Server.MapPath("~/App_Data/User.xml"));
if (info.Exists)
info.Attributes = FileAttributes.Normal;
using (StreamWriter writer = info.CreateText())
{
dataView.Table.AcceptChanges();
dataView.Table.WriteXml(writer, XmlWriteMode.IgnoreSchema);
}
break;
case "Access数据库":
try
{
DataTable table = dataView.Table.GetChanges();
if (table == null)
return;
using (OleDbDataAdapter adapter = new OleDbDataAdapter())
{
OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder();
builder.Provider = "Microsoft.ACE.OLEDB.12.0";
builder.DataSource = @"|DataDirectory|User.accdb";
builder["Jet OLEDB:Database Password"] = "jinzhexian";
OleDbCommand cmd = new OleDbConnection(builder.ConnectionString).CreateCommand();
cmd.CommandText = "delete from [User] where UserName=?";
cmd.Parameters.Add("@UserName", OleDbType.VarWChar, 20, "UserName");
adapter.DeleteCommand = cmd;
cmd = cmd.Clone();
cmd.CommandText = "insert into [User] values(?,?,?,?)";
cmd.Parameters.Add("@UserEmail", OleDbType.VarWChar, 50, "UserEmail");
cmd.Parameters.Add("@Content", OleDbType.VarWChar, 255, "Content");
cmd.Parameters.Add("@SendTime", OleDbType.DBDate, 8, "SendTime");
adapter.InsertCommand = cmd;
cmd = cmd.Clone();
cmd.CommandText = "update [User] set UserEmail=?,Content=?,SendTime=? where UserName=?";
cmd.Parameters.RemoveAt("@UserName");
cmd.Parameters.Add("@UserName", OleDbType.VarWChar, 20, "UserName");
adapter.UpdateCommand = cmd;
adapter.Update(table);
dataView.Table.AcceptChanges();
}
}
catch (Exception se)
{
Response.Write(se.Message);
}
break;
}
gridViewDB.DataSource = dataView;
gridViewDB.DataBind();
btnSave.Enabled = false;
}
#endregion
}