如何實現新增多條資訊到GridView中,而一次儲存到資料庫,不被頁面重新整理而丟失資料呢?
前面我們提到了,如果想要一次將從TextBox資訊新增到GridView的幾行資料記錄新增到資料庫中,我們在設計ASP.NET的頁面時,建議採用AJAX技術,進行區域性資料重新整理。
如圖所示:【建議在IE瀏覽器下執行】以下都是控制元件的拖動,大家都懂的。
另外,在protected void Page_Load(object sender, EventArgse)事件中,定義如下:
{
if(!IsPostBack)
{
DataSetdsGv = new DataSet();
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"
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