[翻译]在GridView中插入新记录
生活随笔
收集整理的這篇文章主要介紹了
[翻译]在GridView中插入新记录
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原文地址:http://www.dotnetbips.com/articles/c1e0ca90-5f5d-47aa-a739-492b562e810a.aspx
[原文源碼下載]
[譯者改后源碼下載]
[翻譯]在GridView中插入新記錄
原文發(fā)布日期:2007.04.11
作者:Bipin Joshi
翻譯:webabcd
GridView控件不允許你插入新記錄。 本文中我將舉例說(shuō)明快速解決這個(gè)問(wèn)題的方法。
介紹
幾個(gè)月前我寫(xiě)了一篇文章,是講述一個(gè)允許你在DataGrid里添加一條新記錄的技巧。 GridView控件不允許你插入新記錄。 這種情況下開(kāi)發(fā)人員經(jīng)常使用如下的技術(shù)增加新記錄:
??? ·他們?cè)贕ridView的下面放置一個(gè)DetailsView控件。 用戶(hù)可以通過(guò)DetailsView增加新記錄,然后這條新記錄就會(huì)顯示在GridView里。
??? ·他們通過(guò)一個(gè)超級(jí)鏈接使用戶(hù)連接到另一個(gè)使用DetailsView增加新記錄的web form。 一旦記錄被添加后就會(huì)返回之前的頁(yè)。
這些方法都有它們自己的缺點(diǎn)。 第一種方法占用了太多的屏幕空間,即使你增加的只是很少的記錄。 所以它不是“主要用于編輯,偶爾增加記錄”情況下的好的選擇。 第二種選擇需要額外創(chuàng)建一個(gè)web form,因?yàn)閬?lái)回導(dǎo)航會(huì)需要向服務(wù)器發(fā)送更多的請(qǐng)求。 本文中我將舉例說(shuō)明快速解決這個(gè)問(wèn)題的方法。
解決方案
GridView控件提供了一個(gè)被稱(chēng)作Empty Data Template的模板。 當(dāng)GridView里沒(méi)有數(shù)據(jù)顯示的時(shí)候這個(gè)模板就會(huì)顯示出來(lái)。 一般在沒(méi)有數(shù)據(jù)顯示的時(shí)候,這個(gè)模板會(huì)被用于顯示一個(gè)給出示給用戶(hù)的狀態(tài)信息。 但是,你也可以為了別的目的而是用它。 本例中,你將使用它來(lái)給GridView增加新的記錄。
新建一個(gè)Web Form示例
開(kāi)始先在Visual Studio中新建一個(gè)web站點(diǎn)。 拖拽一個(gè)SQL數(shù)據(jù)源控件并配置它以從Northwind數(shù)據(jù)庫(kù)的Customers表中選擇出CustomerID、CompanyName、ContactName和Country列。
確保選擇了“高級(jí)”按鈕,并且選中“生成INSERT、UPDATE和DELETE語(yǔ)句”復(fù)選框。
現(xiàn)在,在你的web form里添加一個(gè)GridView控件,設(shè)置它的DataSourceID屬性為SqlDataSource1。 啟用這個(gè)GridView的編輯、刪除和分頁(yè)。 在GridView的智能標(biāo)簽中選擇“編輯列…”選項(xiàng)。
在GridView中增加一個(gè)ButtonField,并設(shè)置它的CommandName屬性為Insert。 用戶(hù)通過(guò)單擊插入按鈕來(lái)增加新的記錄。
現(xiàn)在右鍵單擊GridView選擇編輯模板 – Empty Data Template菜單選項(xiàng)。 拖拽DetailsView控件到Empty Data Template內(nèi),設(shè)置它的DataSourceID屬性為SqlDataSource1。
同時(shí)設(shè)置它的DefaultMode屬性為Insert。 當(dāng)Empty Data Template顯示的時(shí)候,DetailsView將會(huì)做好插入記錄之前的準(zhǔn)備。
現(xiàn)在來(lái)到web form的后置代碼中寫(xiě)出GridView的RowCommand事件處理的代碼,出示如下:
protected?void?GridView1_RowCommand(object?sender,?GridViewCommandEventArgs?e)
{
????if?(e.CommandName?==?"Insert")
????{
????????GridView1.DataSourceID?=?"";
????????GridView1.DataBind();
????}
}
這里我們檢查了GridViewCommandEventArgs的CommandName是否是“Insert”。 如果我們?cè)O(shè)置了GridView的DataSourceID屬性為空,然后調(diào)用GridView的DataBind()方法的話, 那么GridView將不會(huì)有任何數(shù)據(jù),從而顯示Empty Data Template。
現(xiàn)在我們來(lái)處理DetailsView控件的ItemInserted事件。 當(dāng)DetailsView成功的插入了一條新記錄的時(shí)候,這個(gè)ItemInserted事件就會(huì)被觸發(fā)。 在ItemInserted事件內(nèi)寫(xiě)出如下代碼:
protected?void?DetailsView1_ItemInserted(object?sender,?DetailsViewInsertedEventArgs?e)
{
????GridView1.DataSourceID?=?"SqlDataSource1";
????GridView1.DataBind();
}
這里我們?cè)俅卧O(shè)置了GridView的DataSourceID屬性為SqlDataSource1,然后再次綁定它。 這樣GridView就可以顯示出最新插入的記錄。
總結(jié)
GridView控件不允許你插入新的記錄。 但是,通過(guò)它的Empty Data Template的幫助和DetailsView控件,你就可以有一個(gè)插入新記錄的非常棒的方法。 用這種方法你可以節(jié)省屏幕空間,也不需要再用額外的頁(yè)了。
下面的截圖顯示了我們的web form
作者:Bipin Joshi
Email:http://www.dotnetbips.com/contact.aspx
簡(jiǎn)介:Bipin Joshi是DotNetBips.com的管理員。他是http://www.binaryintellect.com/的發(fā)起人,這個(gè)公司提供.NET framwork的培訓(xùn)和咨詢(xún)服務(wù)。他在印度孟買(mǎi)為開(kāi)發(fā)者提供培訓(xùn)。他也是微軟的MVP(ASP.Net)和ASPInsiders的會(huì)員。
譯者注:文中代碼有個(gè)小問(wèn)題,就是在指定數(shù)據(jù)源后會(huì)自動(dòng)進(jìn)行數(shù)據(jù)綁定,而不用再調(diào)用DataBind()方法。
[原文源碼下載]
[譯者改后源碼下載]
[翻譯]在GridView中插入新記錄
原文發(fā)布日期:2007.04.11
作者:Bipin Joshi
翻譯:webabcd
GridView控件不允許你插入新記錄。 本文中我將舉例說(shuō)明快速解決這個(gè)問(wèn)題的方法。
介紹
幾個(gè)月前我寫(xiě)了一篇文章,是講述一個(gè)允許你在DataGrid里添加一條新記錄的技巧。 GridView控件不允許你插入新記錄。 這種情況下開(kāi)發(fā)人員經(jīng)常使用如下的技術(shù)增加新記錄:
??? ·他們?cè)贕ridView的下面放置一個(gè)DetailsView控件。 用戶(hù)可以通過(guò)DetailsView增加新記錄,然后這條新記錄就會(huì)顯示在GridView里。
??? ·他們通過(guò)一個(gè)超級(jí)鏈接使用戶(hù)連接到另一個(gè)使用DetailsView增加新記錄的web form。 一旦記錄被添加后就會(huì)返回之前的頁(yè)。
這些方法都有它們自己的缺點(diǎn)。 第一種方法占用了太多的屏幕空間,即使你增加的只是很少的記錄。 所以它不是“主要用于編輯,偶爾增加記錄”情況下的好的選擇。 第二種選擇需要額外創(chuàng)建一個(gè)web form,因?yàn)閬?lái)回導(dǎo)航會(huì)需要向服務(wù)器發(fā)送更多的請(qǐng)求。 本文中我將舉例說(shuō)明快速解決這個(gè)問(wèn)題的方法。
解決方案
GridView控件提供了一個(gè)被稱(chēng)作Empty Data Template的模板。 當(dāng)GridView里沒(méi)有數(shù)據(jù)顯示的時(shí)候這個(gè)模板就會(huì)顯示出來(lái)。 一般在沒(méi)有數(shù)據(jù)顯示的時(shí)候,這個(gè)模板會(huì)被用于顯示一個(gè)給出示給用戶(hù)的狀態(tài)信息。 但是,你也可以為了別的目的而是用它。 本例中,你將使用它來(lái)給GridView增加新的記錄。
新建一個(gè)Web Form示例
開(kāi)始先在Visual Studio中新建一個(gè)web站點(diǎn)。 拖拽一個(gè)SQL數(shù)據(jù)源控件并配置它以從Northwind數(shù)據(jù)庫(kù)的Customers表中選擇出CustomerID、CompanyName、ContactName和Country列。
確保選擇了“高級(jí)”按鈕,并且選中“生成INSERT、UPDATE和DELETE語(yǔ)句”復(fù)選框。
現(xiàn)在,在你的web form里添加一個(gè)GridView控件,設(shè)置它的DataSourceID屬性為SqlDataSource1。 啟用這個(gè)GridView的編輯、刪除和分頁(yè)。 在GridView的智能標(biāo)簽中選擇“編輯列…”選項(xiàng)。
在GridView中增加一個(gè)ButtonField,并設(shè)置它的CommandName屬性為Insert。 用戶(hù)通過(guò)單擊插入按鈕來(lái)增加新的記錄。
現(xiàn)在右鍵單擊GridView選擇編輯模板 – Empty Data Template菜單選項(xiàng)。 拖拽DetailsView控件到Empty Data Template內(nèi),設(shè)置它的DataSourceID屬性為SqlDataSource1。
同時(shí)設(shè)置它的DefaultMode屬性為Insert。 當(dāng)Empty Data Template顯示的時(shí)候,DetailsView將會(huì)做好插入記錄之前的準(zhǔn)備。
現(xiàn)在來(lái)到web form的后置代碼中寫(xiě)出GridView的RowCommand事件處理的代碼,出示如下:
protected?void?GridView1_RowCommand(object?sender,?GridViewCommandEventArgs?e)
{
????if?(e.CommandName?==?"Insert")
????{
????????GridView1.DataSourceID?=?"";
????????GridView1.DataBind();
????}
}
這里我們檢查了GridViewCommandEventArgs的CommandName是否是“Insert”。 如果我們?cè)O(shè)置了GridView的DataSourceID屬性為空,然后調(diào)用GridView的DataBind()方法的話, 那么GridView將不會(huì)有任何數(shù)據(jù),從而顯示Empty Data Template。
現(xiàn)在我們來(lái)處理DetailsView控件的ItemInserted事件。 當(dāng)DetailsView成功的插入了一條新記錄的時(shí)候,這個(gè)ItemInserted事件就會(huì)被觸發(fā)。 在ItemInserted事件內(nèi)寫(xiě)出如下代碼:
protected?void?DetailsView1_ItemInserted(object?sender,?DetailsViewInsertedEventArgs?e)
{
????GridView1.DataSourceID?=?"SqlDataSource1";
????GridView1.DataBind();
}
這里我們?cè)俅卧O(shè)置了GridView的DataSourceID屬性為SqlDataSource1,然后再次綁定它。 這樣GridView就可以顯示出最新插入的記錄。
總結(jié)
GridView控件不允許你插入新的記錄。 但是,通過(guò)它的Empty Data Template的幫助和DetailsView控件,你就可以有一個(gè)插入新記錄的非常棒的方法。 用這種方法你可以節(jié)省屏幕空間,也不需要再用額外的頁(yè)了。
下面的截圖顯示了我們的web form
作者:Bipin Joshi
Email:http://www.dotnetbips.com/contact.aspx
簡(jiǎn)介:Bipin Joshi是DotNetBips.com的管理員。他是http://www.binaryintellect.com/的發(fā)起人,這個(gè)公司提供.NET framwork的培訓(xùn)和咨詢(xún)服務(wù)。他在印度孟買(mǎi)為開(kāi)發(fā)者提供培訓(xùn)。他也是微軟的MVP(ASP.Net)和ASPInsiders的會(huì)員。
譯者注:文中代碼有個(gè)小問(wèn)題,就是在指定數(shù)據(jù)源后會(huì)自動(dòng)進(jìn)行數(shù)據(jù)綁定,而不用再調(diào)用DataBind()方法。
總結(jié)
以上是生活随笔為你收集整理的[翻译]在GridView中插入新记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 跨语言平台的RSA加密、解密、签名、验证
- 下一篇: 微服务技术栈:常见注册中心组件,对比分析