A. 如何用GridView顯示資料庫中數據
在使用GridView顯示資料庫中的數據時,我們首先需要添加GridView和SqlDataSource控制項。配置數據源的過程相對簡單,只需按照提示步驟操作,直到完成與所需資料庫相應表的連接。接著,將GridView的數據源設置為剛剛配置好的SqlDataSource。這樣操作後,運行應用程序即可在GridView中看到數據。
此外,我們還可以通過編程方式獲取資料庫中的數據。例如,可以創建一個DataSet對象,打開一個SqlConnection連接到資料庫,並定義一個SQL查詢語句。接下來使用SqlDataAdapter填充DataSet。代碼示例如下:
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection(「資料庫連接字元串」);
string sql="SQl查詢語句";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
try {
da.Fill(ds, "tb");
} catch (Exception ex) {
throw new Exception(ex.ToString());
} finally {
con.Close();
}
最後,將GridView的數據源屬性設置為填充後的數據表,即gridview1.DataSource = ds.Tables["tb"]。這樣,GridView就能顯示從資料庫中獲取的數據了。
B. 如何使用最簡便的方式實現GridView下的插入/新建數據操作
本文中我將舉例說明快速解決這個問題的方法。
介紹幾個月前我寫了一篇文章,是講述一個允許你在DataGrid里添加一條新記錄的技巧。 GridView控制項不允許你插入新記錄。 這種情況下開發人員經常使用如下的技術增加新記錄:
·他們在GridView的下面放置一個DetailsView控制項。 用戶可以通過DetailsView增加新記錄,然後這條新記錄就會顯示在GridView里。
·他們通過一個超級鏈接使用戶連接到另一個使用DetailsView增加新記錄的web form。 一旦記錄被添加後就會返回之前的頁。
這些方法都有它們自己的缺點。 第一種方法佔用了太多的屏幕空間,即使你增加的只是很少的記錄。 所以它不是「主要用於編輯,偶爾增加記錄」情況下的好的選擇。 第二種選擇需要額外創建一個web form,因為來回導航會需要向伺服器發送更多的請求。 本文中我將舉例說明快速解決這個問題的方法。解決方案
GridView控制項提供了一個被稱作Empty Data Template的模板。當GridView里沒有數據顯示的時候這個模板就會顯示出來。 一般在沒有數據顯示的時候,這個模板會被用於顯示一個給出示給用戶的狀態信息。 但是,你也可以為了別的目的而是用它。 本例中,你將使用它來給GridView增加新的記錄。
新建一個Web Form示例
開始先在Visual Studio中新建一個web站點。 拖拽一個SQL數據源控制項並配置它以從Northwind資料庫的Customers表中選擇出CustomerID、CompanyName、ContactName和Country列。確保選擇了「高級」按鈕,並且選中「生成INSERT、UPDATE和DELETE語句」復選框。(一定要設置數據的主鍵,否則該功能無法實現)現在,在你的web form里添加一個GridView控制項,設置它的DataSourceID屬性為SqlDataSource1。 啟用這個GridView的編輯、刪除和分頁。 在GridView的智能標簽中選擇「編輯列…」選項。在GridView中增加一個ButtonField,並設置它的CommandName屬性為Insert。 用戶通過單擊插入按鈕來增加新的記錄。 現在右鍵單擊GridView選擇編輯模板 – Empty Data Template菜單選項。 拖拽DetailsView控制項到Empty Data Template內,設置它的DataSourceID屬性為SqlDataSource1。 同時設置它的DefaultMode屬性為Insert。當Empty Data Template顯示的時候,DetailsView將會做好插入記錄之前的准備。
現在來到web form的後置代碼中寫出GridView的RowCommand事件處理的代碼,出示如下:(DataSourceID=「」;不能實現前面代碼數據分頁功能,所以應為DataSourceID=null;)protectedvoid GridView1_RowCommand(object sender, GridViewCommandEventArgs e){if (e.CommandName =="Insert"){GridView1.DataSourceID ="";
GridView1.DataBind();
}} 這里我們檢查了GridViewCommandEventArgs的CommandName是否是「Insert」。 如果我們設置了GridView的DataSourceID屬性為空,然後調用GridView的DataBind()方法的話, 那麼GridView將不會有任何數據,從而顯示Empty Data Template。
現在我們來處理DetailsView控制項的ItemInserted事件。當DetailsView成功的插入了一條新記錄的時候,這個ItemInserted事件就會被觸發。 在ItemInserted事件內寫出如下代碼:(實際操作的時候寫得是Get_Sql();)protectedvoid DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e){GridView1.DataSourceID ="SqlDataSource1";
GridView1.DataBind();
}這里我們再次設置了GridView的DataSourceID屬性為SqlDataSource1,然後再次綁定它。 這樣GridView就可以顯示出最新插入的記錄。 總結
1、GridView控制項不允許你插入新的記錄。 但是,通過它的Empty Data Template的幫助和DetailsView控制項,你就可以有一個插入新記錄的非常棒的方法。 用這種方法你可以節省屏幕空間,也不需要再用額外的頁了。