1. 程式人生 > >如何實現新增多條資訊到GridView中,而一次儲存到資料庫,不被頁面重新整理而丟失資料呢?

如何實現新增多條資訊到GridView中,而一次儲存到資料庫,不被頁面重新整理而丟失資料呢?

前面我們提到了,如果想要一次將從TextBox資訊新增到GridView的幾行資料記錄新增到資料庫中,我們在設計ASP.NET的頁面時,建議採用AJAX技術,進行區域性資料重新整理。

如圖所示:【建議在IE瀏覽器下執行】以下都是控制元件的拖動,大家都懂的。


另外,在protected void Page_Load(object sender, EventArgse)事件中,定義如下:

        {

            if(!IsPostBack)

            {

                DataSetdsGv = new DataSet();

                DataTable

dt = 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;[email protected]";

            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¨¬

                }

            }

        }

相關推薦

如何實現增多資訊GridView儲存資料庫頁面重新整理丟失資料

前面我們提到了,如果想要一次將從TextBox資訊新增到GridView的幾行資料記錄新增到資料庫中,我們在設計ASP.NET的頁面時,建議採用AJAX技術,進行區域性資料重新整理。 如圖所示:【建議在IE瀏覽器下執行】以下都是控制元件的拖動,大家都懂的。 另外,在pro

類成員的可訪問性(不管怎麼設計實現某一個類在記憶體只能呼叫)單態設計模式

為了控制建立物件的個數,需要收回建立物件的權利,下面想辦法設定Teacher為記憶體中唯一物件,在Text中建立並使用Teacher; Teacher package cn.net.sdkd.cise; public class Teacher { pri

風口大流看清一個的世界

區塊鏈學習 成長 2018年,發生了許多事情。 2018年,人生第一次在醫院過了一個春節;2018年,人生第一次收獲了一個“小棉襖”(小情人);2018年,互聯網IT的風口轉向了區塊鏈;2018年,人生第一次在51cto學院報了區塊鏈課程。 一直以來,自己都有一個認知,風口年年有,追到何時才是頭。

【Java】 劍指offer(56-2) 陣列唯一隻出現的數字 《劍指Offer》Java實現合集 56-1) 陣列只出現的兩個數字 《劍指Offer》Java實現合集

  本文參考自《劍指offer》一書,程式碼採用Java語言。 更多:《劍指Offer》Java實現合集   題目   在一個數組中除了一個數字只出現一次之外,其他數字都出現了三次。請找出那個只出現一次的數字。 思路   這道題中數字出現了三次,無法像56-1) 陣列

經典演算法題1:找出陣列只出現的數字其它數字都出現了兩

題目:一個整型數組裡除了一個數字之外,其它的數字都出現了兩次。請寫程式找出這個只出現一次的數字。要求時間複雜度是O(n),空間複雜度是O(1)。 分析:由於題目要求時間複雜度為O(n),所以先排序然後比較相鄰數字是否相同的思路被排除。             空間複雜度是O

劍指offer程式設計題(JAVA實現)——第40題:陣列只出現的數字

github https://github.com/JasonZhangCauc/JZOffer 劍指offer程式設計題(JAVA實現)——第40題:陣列中只出現一次的數字

陣列只出現的數字時間複雜度O(n),空間複雜度O(1)的解法

題目:一個整型數組裡除了兩個陣列外,其他的數字都出現了兩次,要找出這兩個數字。      異或運算有一個性質:任何數異或它自己,結果都是0;這樣如果題目變成只有一個數字只出現一次,其他數字均出現兩次,這樣我們從頭到尾異或陣列中的每一個數字,那麼最終的結果就是隻出現一次的數字

Single Number II -- 找出陣列唯一出現的數其它數都出現了三

 原題: Given an array of integers, every element appears three times except for one. Find that single one. =>給定一個數組,除了一個元素,其它每個元素都出現了三

原 一個TeeChart外掛增多曲線的方法(C++)

程式碼如下:   //初始化陣列          intdData[100];         &nb

Oracle同時增多資料

假設現在有一個招聘會公司表,一個招聘崗位表。。其中招聘崗位的co_id關聯招聘公司的id。一個招聘會公司可能會發布很多個招聘崗位。name在新增招聘崗位的時候 <insert id="addFairPosition" parameterType="java.u

java List包含List如何增多個list,Map包含多個list如何新增?

1、List中新增list public class TestList { public static void main(String[] args) { List<List<Integer>> vecvecRes = new ArrayLi

百度地圖 迴圈載入marker並增多資訊視窗解決只顯示最後一個視窗資訊的問題

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ShowNurseryInfo.aspx.cs"     Inherits="Bim5D_Web.Nursery.ShowNurseryInfo" %> <!DOCTY

新建一個DataTable如何手動給其增多資料

 早晨起來,想起昨天利用winform做類似於sqlserver資料庫匯入資料功能的時候,用到了新建一個DataTable手動給其新增多條資料,平時用不到,需要的時候想不起來了,這次不妨把他記下來。以下是程式碼,很簡單。     //宣告並例項化datatable     DataTable dt = n

java實現刪除某資訊重新整理當前頁

//執行的是刪除資訊的操作 String a=request.getParameter("name"); a = URLEncoder.encode(a, "ISO-8859-1"); String name

C語言實現找出個數組只出現的數

題目: 一個數組中只有兩個數字是出現一次,其他所有數字都出現了兩次,找出這兩個數字,程式設計實現。 思路: 最簡單直觀的方法,我們用兩個for迴圈,外迴圈用i,內迴圈用j表示,陣列長度用len表示,外迴圈執行一次,內迴圈執行len-1次,逐一比較,如果相等

MySQL同時增多記錄

有時候,需要一次向表中新增多條記錄,MySQL提供了使用一條SQL語句,同時新增多條記錄的功能 INSERT INTO 表名 [(欄位名1,欄位名2,…)] VALUES(值1,值2,…),(值1,值2,…), …… (值1,值2,…); 引數說明

在專案遷移MS SQLServer到Mysql資料庫實現MySQL資料庫的快速整合

在開發專案的時候,往往碰到的不同的需求情況,相容不同型別的資料庫是我們專案以不變應萬變的舉措之一,在底層能夠相容多種資料庫會使得我們開發不同型別的專案得心應手,如果配合快速的框架支援,那更是錦上添花的舉措。我開發的專案或者框架,採用了微軟企業庫Enterprise Library的模組,傾向於支援多種資料庫,

出現錯誤提示:各個節在每個配置檔案只能出現。有關異常的資訊請參閱幫助主題 。

在web.config配置檔案中,每一個節只能出現一次。你的某個節出現在了web.config中兩次,因此報這種錯誤. 解決辦法:仔細查詢 web.config 檔案,看一下有沒有重複的節點,

獲取gridview選擇行時選擇的行的資料

        private void gridView1_BeforeLeaveRow(object sender, DevExpress.XtraGrid.Views.Base.RowAllowEventArgs e)        {            int i

GridView的每頁末尾添加空行

stat new eight bold tro type creat font grid 原文發布時間為:2008-08-03 —— 來源於本人的百度文章 [由搬家工具導入] protected void GridView1_RowCreated(object sender