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

前面我们提到了,如果想要一次将从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¨¬

                }

            }

        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值