<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="interView._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script src="js/jquery-1.3.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var userList;//定义全局变量存储JSON数据
var index;
function AddUser(){
$("#detail").show();
$("#txtName").val("");
$("#txtId").val("");
$("#txtAge").val("");
$("#txtSex").val("");
$("#op").val("add");
}
function EditUser(index){
$("#detail").show();
$("#txtName").val(userList[index].Name);
$("#txtId").val(userList[index].ID);
$("#txtAge").val(userList[index].Age);
$("#txtSex").val(userList[index].Sex);
$("#op").val("edit");
}
function PostBack(){
$.getJSON("Default.aspx",
{"id":$("#txtId").val(),"name":$("#txtName").val(),
"sex":$("#txtSex").val(),
"age":$("#txtAge").val(),
"op":$("#op").val()},
ShowData);
}
function DelUser(index){
// alert(userList[index].ID);
$.getJSON("default.aspx",{"id":userList[index].ID,"op":"del"},ShowData);
}
function GetData(){//页面加载完成后调用该方法,读取JSON数据,显示页面
$.getJSON("default.aspx?op=get",ShowData);
}
function ShowData(data){
$("#data td").parents("tr").remove();
userList = data;
for(i=0;i<userList.length;i++){
$("#data").append("<tr id='tr"+i+"'><td>"+userList[i].ID+"</td><td>"
+userList[i].Name+"</td><td>"+
userList[i].Sex+"</td><td>"+
userList[i].Age+"</td><td><a href='#' οnclick='EditUser("+
i+")'>Edit</a> <a href='#' οnclick='DelUser("+
i+")'>Del</a></td></tr>");
}
$("#msg").hide();
$("#detail").hide();
}
$().ready(GetData);
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="detail" style="display: none; background: gray; width: 300px; height: 200px;
position: absolute;">
Name:<input type="text" id="txtName" /><br />
Sex:<input type="text" id="txtSex" /><br />
Age:<input type="text" id="txtAge" /><br />
<input type="hidden" id="txtId" /><input type="hidden" id="op" />
<input type="button" value="提交" οnclick="PostBack()" />
</div>
<div>
<input type="button" value="添加" οnclick="AddUser();" />
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"
width="400px" id="data">
<tr>
<th>
Id
</th>
<th>
Name
</th>
<th>
Sex
</th>
<th>
Age
</th>
<th>
操作
</th>
</tr>
</table>
<span id="msg">正在读取数据。。。</span>
</div>
</form>
</body>
</html>
------------------------------------------------------------------------------C#-------------------------------------------------------------------------------------
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Model;
using BLL;
using System.IO;
using System.Collections.Generic;
using System.Web.Script.Serialization;
using System.Reflection;
namespace interView
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request["op"] == "add")
{
Add();
}
else if (Request["op"] == "edit")
{
Edit();
}
else if (Request["op"] == "del")
{
Delete();
}
else if (Request["op"] == "get")
{
RefrashGridView();
}
}
private void Edit()
{
int id = int.Parse(Request["id"]);
string name = Request["name"];
string sex = Request["sex"];
int age = int.Parse(Request["age"]);
UserInfo user = new UserInfo();
user.ID = id;
user.Age = age;
user.Name = name;
user.Sex = sex;
//UserInfoManager.UpdateUserInfo(user);
List<UserInfo> u = new List<UserInfo>();
u.Add(user);
ModelHandler<UserInfo> m = new ModelHandler<UserInfo>();
DataTable newDT = m.FillDataTable(u);
DataTable dt = HttpContext.Current.Session["UserInfo"] as DataTable;
dt.Rows.RemoveAt(id);
dt.Merge(newDT);
dt.DefaultView.Sort = "ID ASC";
HttpContext.Current.Session["UserInfo"] = dt.DefaultView.ToTable();
RefrashGridView();
}
private void Delete()
{
int id = int.Parse(Request["id"]);
UserInfo user = new UserInfo();
user.ID = id;
//UserInfoManager.DeleteUserInfo(user);
List<UserInfo> u = new List<UserInfo>();
u.Add(user);
ModelHandler<UserInfo> m = new ModelHandler<UserInfo>();
DataTable newDT = m.FillDataTable(u);
DataTable dt = HttpContext.Current.Session["UserInfo"] as DataTable;
dt.Rows.RemoveAt(id);
int index = 0;
foreach (DataRow item in dt.Rows)
{
item["id"] = index;
index++;
}
HttpContext.Current.Session["UserInfo"] = dt;
RefrashGridView();
Response.End();
}
private void Add()
{
string name = Request["name"];
string sex = Request["sex"];
int age = int.Parse(Request["age"]);
UserInfo user = new UserInfo();
user.Age = age;
user.Name = name;
user.Sex = sex;
//UserInfoManager.AddUserInfo(user);
List<UserInfo> u = new List<UserInfo>();
u.Add(user);
ModelHandler<UserInfo> m = new ModelHandler<UserInfo>();
DataTable newDT = m.FillDataTable(u);
DataTable dt = HttpContext.Current.Session["UserInfo"] as DataTable;
if (dt == null)
{
HttpContext.Current.Session["UserInfo"] = newDT;
}
else
{
//dt.ImportRow(newDT.Rows[0]);
dt.Merge(newDT);
int index = 0;
foreach (DataRow item in dt.Rows)
{
item["id"] = index;
index++;
}
HttpContext.Current.Session["UserInfo"] = dt;
}
RefrashGridView();
}
private void RefrashGridView()
{
//List<UserInfo> users = UserInfoManager.GetAllUserInfo();
DataTable dt = HttpContext.Current.Session["UserInfo"] as DataTable;
ModelHandler<UserInfo> m = new ModelHandler<UserInfo>();
List<UserInfo> users = m.FillModel(dt);
JavaScriptSerializer jss = new JavaScriptSerializer();
Response.Write(jss.Serialize(users));
Response.End();
}
}
#region DataTable与实体类互相转换
/// <summary>
/// DataTable与实体类互相转换
/// </summary>
/// <typeparam name="T">实体类</typeparam>
public class ModelHandler<T> where T : new()
{
#region DataTable转换成实体类
/// <summary>
/// 填充对象列表:用DataSet的第一个表填充实体类
/// </summary>
/// <param name="ds">DataSet</param>
/// <returns></returns>
public List<T> FillModel(DataSet ds)
{
if (ds == null || ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0)
{
return null;
}
else
{
return FillModel(ds.Tables[0]);
}
}
/// <summary>
/// 填充对象列表:用DataSet的第index个表填充实体类
/// </summary>
public List<T> FillModel(DataSet ds, int index)
{
if (ds == null || ds.Tables.Count <= index || ds.Tables[index].Rows.Count == 0)
{
return null;
}
else
{
return FillModel(ds.Tables[index]);
}
}
/// <summary>
/// 填充对象列表:用DataTable填充实体类
/// </summary>
public List<T> FillModel(DataTable dt)
{
if (dt == null || dt.Rows.Count == 0)
{
return null;
}
List<T> modelList = new List<T>();
foreach (DataRow dr in dt.Rows)
{
//T model = (T)Activator.CreateInstance(typeof(T));
T model = new T();
for (int i = 0; i < dr.Table.Columns.Count; i++)
{
PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName);
if (propertyInfo != null && dr[i] != DBNull.Value)
propertyInfo.SetValue(model, dr[i], null);
}
modelList.Add(model);
}
return modelList;
}
/// <summary>
/// 填充对象:用DataRow填充实体类
/// </summary>
public T FillModel(DataRow dr)
{
if (dr == null)
{
return default(T);
}
//T model = (T)Activator.CreateInstance(typeof(T));
T model = new T();
for (int i = 0; i < dr.Table.Columns.Count; i++)
{
PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName);
if (propertyInfo != null && dr[i] != DBNull.Value)
propertyInfo.SetValue(model, dr[i], null);
}
return model;
}
#endregion
#region 实体类转换成DataTable
/// <summary>
/// 实体类转换成DataSet
/// </summary>
/// <param name="modelList">实体类列表</param>
/// <returns></returns>
public DataSet FillDataSet(List<T> modelList)
{
if (modelList == null || modelList.Count == 0)
{
return null;
}
else
{
DataSet ds = new DataSet();
ds.Tables.Add(FillDataTable(modelList));
return ds;
}
}
/// <summary>
/// 实体类转换成DataTable
/// </summary>
/// <param name="modelList">实体类列表</param>
/// <returns></returns>
public DataTable FillDataTable(List<T> modelList)
{
if (modelList == null || modelList.Count == 0)
{
return null;
}
DataTable dt = CreateData(modelList[0]);
foreach (T model in modelList)
{
DataRow dataRow = dt.NewRow();
foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
{
dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null);
}
dt.Rows.Add(dataRow);
}
return dt;
}
/// <summary>
/// 根据实体类得到表结构
/// </summary>
/// <param name="model">实体类</param>
/// <returns></returns>
private DataTable CreateData(T model)
{
DataTable dataTable = new DataTable(typeof(T).Name);
foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
{
dataTable.Columns.Add(new DataColumn(propertyInfo.Name, propertyInfo.PropertyType));
}
return dataTable;
}
#endregion
}
#endregion
#region 实体类UserInfo
/// <summary>
/// 实体类UserInfo
/// </summary>
public class UserInfo
{
public int ID { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
}
#endregion
}