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