default.aspx.cs
using System.Data.SqlClient;
using System.Data.OleDb;
using System.IO;
namespace Web0531
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
db.dataBind(ListView1, "select * from exam order by id");
try
{
int PageSize = (int)Session["PageSize"]; // 保证从修改页面能返回到原来的页面
int StartRowIndex = (int)Session["StartRowIndex"];
((DataPager)ListView1.FindControl("DataPager1")).SetPageProperties(StartRowIndex, PageSize, true);
}
catch { }
}
}
// 数据项绑定后,将正确答案的选项“蓝色、加粗”显示
protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
try
{
Label lb = (Label)e.Item.FindControl("answerLabel"); // 取答案
string ans = lb.Text.Trim() + "Label"; // 如果答案是a;b;c;d其中之一
Label lbans = (Label)e.Item.FindControl(ans); // 没有答案时会出错
lbans.CssClass = "bb"; // 设置答案选项的样式
}
catch { }
}
// 翻页时执行
protected void ListView1_PagePropertiesChanged(object sender, EventArgs e)
{
int PageSize = ((DataPager)ListView1.FindControl("DataPager1")).PageSize; // 每页记录数
int StartRowIndex = ((DataPager)ListView1.FindControl("DataPager1")).StartRowIndex; // 首行的索引值
int TotalRowCount = ((DataPager)ListView1.FindControl("DataPager1")).TotalRowCount; // 总记录数
//Response.Write("PageSize = " + PageSize.ToString() + " ; StartRowIndex = " + StartRowIndex.ToString() + " ; TotalRowcount = " + TotalRowCount.ToString() + ";");
((DataPager)ListView1.FindControl("DataPager1")).SetPageProperties(StartRowIndex, PageSize, false);
db.dataBind(ListView1, "select * from exam order by id"); // 重新绑定数据
Session["StartRowIndex"] = StartRowIndex; // 记录信息到 Session,用于从修改页面返回时能回到原来的页面
Session["PageSize"] = PageSize;
}
// 删除记录
protected void ListView1_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
string id = ((Label)ListView1.Items[e.ItemIndex].FindControl("idLabel")).Text; // 要删记录的 id 号
OleDbConnection cn = db.AccessConnection();
cn.Open();
OleDbCommand cmd = new OleDbCommand("delete from exam where id=" + id, cn);
cmd.ExecuteNonQuery();
cn.Close();
cmd.Dispose();
int PageSize = ((DataPager)ListView1.FindControl("DataPager1")).PageSize; // 若删除的是最后页面中的记录,可能需要调整
int StartRowIndex = ((DataPager)ListView1.FindControl("DataPager1")).StartRowIndex;
int TotalRowCount = ((DataPager)ListView1.FindControl("DataPager1")).TotalRowCount;
if (TotalRowCount < 3) // 若记录要删除完,回复原来的所有记录
{
File.Copy(Server.MapPath("App_Data/peixun.bak"), Server.MapPath("App_Data/peixun.mdb"), true);
}
else
{
if (StartRowIndex == TotalRowCount - 1) // 若最后页的记录删完
{
StartRowIndex -= PageSize; // 要切回到原最后页的前一页,DataPager本身不会处理
((DataPager)ListView1.FindControl("DataPager1")).SetPageProperties(StartRowIndex, PageSize, false);
Session["StartRowIndex"] = StartRowIndex;
Session["PageSize"] = PageSize;
}
}
db.dataBind(ListView1, "select * from exam order by id"); // 重新绑定数据
}
}
}
modify.aspx.cs
using System.Data.OleDb;
namespace Web0531
{
public partial class modify : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string urlId = Request.QueryString["id"]; // 要修改记录的 id 号
//if (string.IsNullOrEmpty(urlId)) urlId = "4"; // 测试用
OleDbConnection conn = db.AccessConnection();
conn.Open();
OleDbCommand cmd = new OleDbCommand("select * from exam where id=" + urlId, conn);
OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (dr.Read())
{
id.Value = dr["id"].ToString(); // 把原来的题目信息显示出来
tm.Text = dr["question"].ToString();
a.Text = dr["a"].ToString();
b.Text = dr["b"].ToString();
c.Text = dr["c"].ToString();
d.Text = dr["d"].ToString();
int i = dr["answer"].ToString()[0] - 'A'; // 仅处理单选
if(i>=0 && i<=3) da.Items[i].Selected = true;
}
conn.Close();
dr.Close();
}
}
// 更新记录
protected void Button1_Click(object sender, EventArgs e)
{
string rda = null;
for (int i = 0; i < da.Items.Count; ++i)
{
if (da.Items[i].Selected)
{
rda = Convert.ToString((char)('A' + i)); // 答案,仅处理单选
break;
}
}
if (string.IsNullOrEmpty(rda)) rda = " ";
string sql = "update exam set question='" + tm.Text.Replace("'", "''") + "',a='" + a.Text.Replace("'", "''") + "',b='" + b.Text.Replace("'", "''") + "',c='" + c.Text.Replace("'", "''") + "',d='" + d.Text.Replace("'", "''") + "',answer='" + rda + "' where id=" + id.Value;
OleDbConnection conn = db.AccessConnection();
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.ExecuteNonQuery(); // 执行更新
conn.Close();
Response.Redirect("default.aspx"); // 返回到原来的页面
}
}
}
new.aspx.cs
using System.Data.OleDb;
namespace Web0531
{
public partial class _new : System.Web.UI.Page // 插入新的考试题目
{
// 插入新记录
protected void Button1_Click(object sender, EventArgs e)
{
string rda = null;
for (int i = 0; i < da.Items.Count; ++i) // 选择的答案
{
if (da.Items[i].Selected)
{
rda = Convert.ToString((char)('A' + i)); // 转换成字符串
break; // 仅考虑单选
}
}
if (string.IsNullOrEmpty(rda)) rda = " ";
string sql = "insert into exam(question,a,b,c,d,answer) values ('" + tm.Text.Replace("'", "''") + "','" + a.Text.Replace("'", "''") + "','" + b.Text.Replace("'", "''") + "','" + c.Text.Replace("'", "''") + "','" + d.Text.Replace("'", "''") + "','" + rda + "')";
OleDbConnection conn = db.AccessConnection();
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn); // 插入到数据库
cmd.ExecuteNonQuery();
conn.Close();
Response.Redirect("default.aspx"); // 返回到原来所在的页面,要看刚插入的题目,可单击“最后一页”按钮
}
}
}
完整项目下载: