前面我们提到了,如果想要一次将从TextBox信息添加到GridView的几行数据记录添加到数据库中,我们在设计ASP.NET的页面时,建议采用AJAX技术,进行局部数据刷新。
如图所示:【建议在IE浏览器下运行】以下都是控件的拖动,大家都懂的。
另外,在protected void Page_Load(object sender, EventArgse)事件中,定义如下:
{
if(!IsPostBack)
{
DataSetdsGv = new DataSet();
DataTabledt = new DataTable(); //表
dt.Columns.Add("userName",typeof(string));//列
dt.Columns.Add("sex",typeof(string));
dt.Columns.Add("address",typeof(string));
dt.Columns.Add("gradeID",typeof(int));
dsGv.Tables.Add(dt);
ViewState["dsGv"] = dsGv; //当页有效存放数据集
bind();
}
}
这样每一添加一个数据,就会在原来的基础上加入一条记录,而不会每次都刷新页面,导致每次都是显示一条数据。
这样每次填写完信息,点击【添加】,便显示在GridView中【本案例将gridview命名为GvInformation】
【注意】写在if(!IsPostBack)中。。。 。
protected void bind() //绑定显示数据
{
if(((DataSet)ViewState["dsGv"]).Tables[0].Rows.Count > 0)
{
GvInformation.DataSource = ((DataSet)ViewState["dsGv"]);
GvInformation.DataBind();
}
else
{
GvInformation.DataSource = null;
GvInformation.DataBind();
}
}
///<summary>
///添加按钮
///</summary>
///<param name="sender"></param>
///<paramname="e"></param>
protectedvoid Button1_Click(objectsender,EventArgs e)//添加按钮操作
{
if(TxtGradeID.Text.Trim() !=""&& Convert.ToInt32(TxtGradeID.Text.Trim())> 0 &&int.Parse(TxtGradeID.Text.Trim())< 9)
{
DataRowdr =((DataSet)ViewState["dsGv"]).Tables[0].NewRow();//创ä¡ä建¡§一°?个?新?纪¨ª录?,ê?并¡é修T改?纪¨ª录?的Ì?值¦Ì
dr.ItemArray = newobject[] { //这个方法很多,您也可以用其他方法
TxtName.Text.Trim(),
TxtSex.Text.Trim(),
TxtAddress.Text.Trim(),
int.Parse(TxtGradeID.Text.Trim()) //转换
};
((DataSet)ViewState["dsGv"]).Tables[0].Rows.Add(dr); //填充到表中
bind();
TxtName.Text = "";
TxtGradeID.Text = "";
TxtSex.Text = "";
TxtAddress.Text = "";
}
else
{
message.AjaxResponeSrcipt(UpdatePanel1, this.GetType(),"请您填写完整信息");
}
}
//也许你会有疑问,为什么我会通过一个GridView进行显示,其实这样的作用有:
//*****便于用户在大量添加数据的时候,在表格中显示了,容易检查是否输错,便于修改
protected void BtnSubmit_Click(object sender, EventArgs e) //提交操作,保存到数据库中
{
if(AddUserInfo((DataSet)ViewState["dsGv"]))
{
message.AjaxResponeSrcipt(UpdatePanel1,this.GetType(),"提交成功");
((DataSet)ViewState["dsGv"]).Tables[0].Rows.Clear();
bind();
}
else
{
message.AjaxResponeSrcipt(UpdatePanel1, this.GetType(),"提交失败");
}
}
//*****************************************************************************
protected bool AddUserInfo(DataSet ds)
{
int mainID=0;
ListId.Clear();
Model model = new Model();
if(ds != null && ds.Tables.Count > 0&& ds.Tables[0].Rows.Count > 0)
{
foreach(DataRow drinds.Tables[0].Rows)
{
model.userName = dr["userName"].ToString();
model.sex = dr["sex"].ToString();
model.address = dr["address"].ToString();
model.gradeID = Convert.ToInt32(dr["gradeID"].ToString());
mainID = Add(model);
}
if(mainID > 0)
{
ListId.Add(mainID);
return true;
}
else
{
return false;
}
}
else
return false;
}
//***************************************
protected int Add(Model model)
{
StringBuilderstrSql =new StringBuilder();
strSql.Append("insert into userInfo(");
strSql.Append("userName,sex,address,gradeID)");
strSql.Append(" values(");
strSql.Append("@userName,@sex,@address,@gradeID)");
strSql.Append(";select @@IDENTITY");
SqlParameter[]parameters = {
new SqlParameter("@userName",SqlDbType.NVarChar,50),
new SqlParameter("@sex",SqlDbType.NVarChar,50),
new SqlParameter("@address",SqlDbType.NVarChar,50),
new SqlParameter("gradeID",SqlDbType.Int,4)
};
parameters[0].Value =model.userName;
parameters[1].Value = model.sex;
parameters[2].Value =model.address;
parameters[3].Value =model.gradeID;
object objID = GetSingle(strSql.ToString(),parameters);
if(objID == null)
return0;
else
returnConvert.ToInt32(objID);
}
//****************************************************************************
protected static object GetSingle(string SQLString,paramsSqlParameter[]cmdParameters)
{
string connectionString ="DataSource=VQJREZV7D;Initial Catalog=gridviewAPP;UserID=sa;Password=admin@123456";
using(SqlConnection connection =new SqlConnection(connectionString))
{
using(SqlCommand cmd =newSqlCommand())
{
try
{
PrepareCommand(cmd,connection, null, SQLString, cmdParameters);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if ((Object.Equals(obj,null)) || (Object.Equals(obj,System.DBNull.Value)))
{
returnnull;
}
else
{
return obj;
}
}
catch(System.Data.SqlClient.SqlException e)
{
throw e;
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
}
private static void PrepareCommand(SqlCommand cmd,SqlConnection conn, SqlTransactiontrans, string cmdText, SqlParameter[]cmdParms)
{
// 为asql语®?句?准Á?备À?参?数ºy
if(conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if(trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if(cmdParms != null)
{
foreach(SqlParameter parameterin cmdParms)
{
if((parameter.Direction ==ParameterDirection.InputOutput|| parameter.Direction ==ParameterDirection.Input)&&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);//添¬¨ª加¨®参?数ºy值¦Ì,ê?传ä?递ÌY给?存ä?储ä¡é过y程¨¬
}
}
}