您的位置:首页 > 数据库

如何实现添加多条信息到GridView中,而一次保存到数据库,不被页面刷新而丢失数据呢?

2013-10-24 00:23 891 查看
前面我们提到了,如果想要一次将从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程¨¬
                }
            }
        }
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐