GridView使用學(xué)習(xí)總結(jié)
由于Asp.Net視頻比較舊,涉及到的數(shù)據(jù)綁定控件DataGrid在VS2012中已經(jīng)沒有了,取而代之的是GridView。開始覺得視頻中的例子沒法實(shí)現(xiàn)了,其實(shí)不然,DataGrid里面的功能GridView里一樣都不少,只是形式變化了一下,仔細(xì)研究一下發(fā)現(xiàn)它們是換湯不換藥啊。
(一)DataKeyName屬性
(1)DataKeyNames一般都是用來對(duì)當(dāng)前行做唯一標(biāo)示的,所以一般為數(shù)據(jù)庫(kù)的ID。
(2)GridView.DataKeys[e.RowIndex],e.RowIndex是獲取事件對(duì)應(yīng)的行,GridView.DataKeys[e.RowIndex]就是獲取對(duì)應(yīng)行的唯一標(biāo)示也就是DataKeyNames所指定列的值。
(3)DataList和Repeater是沒有的該屬性的。
在代碼中這樣使用:(定義的該函數(shù)在下面都需要調(diào)用)
/// <summary> /// 實(shí)現(xiàn)數(shù)據(jù)綁定功能 /// </summary> private void BindToDataGird() { SqlConnection con = DB.CreateCon(); SqlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = new SqlCommand("select employeeID,FirstName,LastName,Title,BirthDate from employees ", con); DataSet ds = new DataSet(); sda.Fill(ds, "emp"); //將查詢到的數(shù)據(jù)添加到DataSet中。 this.GridView1.DataKeyNames =new string[]{ "employeeID"}; //DataKeyNames的使用 this.GridView1.DataSource = ds.Tables["emp"]; this.DataBind(); }
如何取值?
DataKey key = GridView1.DataKeys[e.RowIndex];//其中e為GridViewDelete(或者Edit)EventArgs e string empID = key[0].ToString();
(二)分頁(yè)
由于GridView中封裝了分頁(yè)的功能。這里實(shí)現(xiàn)起來很容易。先需要設(shè)置屬性:AllowPaging/PageSize/PageSetting。然后編寫事件代碼:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { this.GridView1.PageIndex = e.NewPageIndex; this.BindToDataGird(); }
(三)排序
首先設(shè)置AllowSorting屬性為true.事件代碼:
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { if (ViewState["order"] == null) //使用ViewState設(shè)置雙向排序。 { ViewState["order"] = "ASC"; } else { if (ViewState["order"].ToString() == "ASC") { ViewState["order"] = "DESC"; } else { ViewState["order"] = "ASC"; } } //數(shù)據(jù)綁定顯示 SqlConnection con = DB.CreateCon(); SqlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = new SqlCommand("select employeeID,FirstName,LastName,Title,BirthDate from employees ", con); DataSet ds = new DataSet(); sda.Fill(ds, "emp"); ds.Tables["emp"].DefaultView.Sort = e.SortExpression + " " + ViewState["order"].ToString(); //設(shè)置排序 this.GridView1.DataSource = ds.Tables["emp"].DefaultView; //將表的默認(rèn)視圖作為數(shù)據(jù)源。 this.DataBind(); }
(四)刪除
這里需要注意一點(diǎn):就是獲取某一行的主鍵值。
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { DataKey key = GridView1.DataKeys[e.RowIndex]; string empID = key[0].ToString(); SqlConnection con = DB.CreateCon(); SqlCommand cmd = new SqlCommand("delete from employees where employeeID= '"+empID+"'" , con); con.Open(); cmd.ExecuteNonQuery(); this.BindToDataGird(); }
(五)編輯(更新和取消)
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { this.GridView1.EditIndex = e.NewEditIndex; this.BindToDataGird(); } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { this.GridView1.EditIndex = -1; //設(shè)置索引值為負(fù)取消編輯。 this.BindToDataGird(); } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { DataKey key = GridView1.DataKeys[e.RowIndex]; string empID = key[0].ToString(); string lastName=((TextBox)(GridView1.Rows [e.RowIndex ] .Cells [2].Controls [0])).Text ; //將GridView中某列中控件強(qiáng)制轉(zhuǎn)換為TextBox,然后取出它的值。 Response.Write(empID +"&" + lastName ); //用于測(cè)試。 this.GridView1.EditIndex = -1; this.BindToDataGird(); }
附結(jié)果圖:
小結(jié):數(shù)據(jù)綁定控件:Reapter/DataList/GridView的功能成遞增關(guān)系,都使用到了模板。所以掌握模板很重要。視頻使用模板大都是使用控件,不是代碼。總感覺這里需要學(xué)習(xí)的地方還有很多。需要做例子鞏固使用。
- GridView自動(dòng)增加序號(hào)(三種實(shí)現(xiàn)方式)
- C#處理datagridview虛擬模式的方法
- C#中datagridview的EditingControlShowing事件用法實(shí)例
- C#中GridView動(dòng)態(tài)添加列的實(shí)現(xiàn)方法
- C#實(shí)現(xiàn)DataGridView控件行列互換的方法
- C#實(shí)現(xiàn)綁定DataGridView與TextBox之間關(guān)聯(lián)的方法
- C#中DataGridView常用操作實(shí)例小結(jié)
- C#實(shí)現(xiàn)3步手動(dòng)建DataGridView的方法
- asp.net中GridView數(shù)據(jù)鼠標(biāo)移入顯示提示信息
- C#中DataGridView動(dòng)態(tài)添加行及添加列的方法
- 如何用jQuery實(shí)現(xiàn)ASP.NET GridView折疊伸展效果
- ASP.NET GridView中加入RadioButton不能單選的解決方案
- DataGridView展開與收縮功能實(shí)現(xiàn)
- GridView控件如何顯示序號(hào)
相關(guān)文章
asp.net中將數(shù)據(jù)庫(kù)綁定到DataList控件的實(shí)現(xiàn)方法與實(shí)例代碼
我現(xiàn)在要做這個(gè)頁(yè)面,然后我用DataList控件顯示題目,我想問如何把我數(shù)據(jù)庫(kù)的題目綁定到DataList控件里面,然后讓它顯示考試題目?2011-06-06asp.net后臺(tái)如何動(dòng)態(tài)添加JS文件和css文件的引用
動(dòng)態(tài)添加JS文件和css文件的引用在asp.net后臺(tái)如何實(shí)現(xiàn)呢?首先添加命名空間 using System.Web.UI.HtmlControls,之后按照下面的步驟操作即可2014-09-09AspNetCore&MassTransit?Courier實(shí)現(xiàn)分布式事務(wù)的詳細(xì)過程
MassTransit?Courier是一種用于創(chuàng)建和執(zhí)行帶有故障補(bǔ)償?shù)姆植际绞聞?wù)的機(jī)制,它可以用于滿足本地事務(wù)的需求,也可以在分布式系統(tǒng)中實(shí)現(xiàn)分布式事務(wù),這篇文章主要介紹了AspNetCore&MassTransit?Courier實(shí)現(xiàn)分布式事務(wù),需要的朋友可以參考下2022-10-10小心!ASP.NET網(wǎng)站發(fā)布時(shí)的那些坑
ASP.NET網(wǎng)站發(fā)布時(shí)的那些坑,要小心了,為什么網(wǎng)站發(fā)布后,每個(gè)頁(yè)面第一次打開都很卡?ASP.NET session 頻繁丟失如何解決?具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04