ASP.NET:就是喜歡Web Form,就是喜歡拖控制項(三)

來源:互聯網
上載者:User

ASP.NET:就是喜歡Web Form,就是喜歡拖控制項(一)
ASP.NET:就是喜歡Web Form,就是喜歡拖控制項(二)
ASP.NET:就是喜歡Web Form,就是喜歡拖控制項(三)
ASP.NET:就是喜歡Web Form,就是喜歡拖控制項(四)
ASP.NET:就是喜歡Web Form,就是喜歡拖控制項(五)

 

前一篇ASP.NET:就是喜歡Web Form,就是喜歡拖控制項(二)裡有評論提到,老趙怎麼跟包子餃子跑一塊去了?咱們仔細看,這樣列出的表確實有些問題,company_id被設計成一個外鍵,若是直接列出此表給使用者看,company_id是不可理解的。

id name company_id image
1 包子 3 [bin]
2 蒸餃 3 [bin]
3 人才 1 [bin]
4 MVP 1 [bin]
5 Window 7 2 [bin]

我們不妨再往前點,回憶下此系列的第一篇 ASP.NET:就是喜歡Web Form,就是喜歡拖控制項(一)

似乎還有這麼一張表:

Company

id name
1 部落格園
2 微軟
3 樓下包子鋪

不錯,老趙和包子蒸餃可不是一個地兒出來的。我們的使用者大概更希望看到下面的表:

id name company_name image
1 包子 樓下包子鋪 [bin]
2 蒸餃 樓下包子鋪 [bin]
3 人才 部落格園 [bin]
4 MVP 部落格園 [bin]
5 Window 7 微軟 [bin]

這樣的資料表就清晰多了。

說起實現,你的第一個想法可能是C#去查詢,不過資料庫為我們提供了更佳的方法:視圖。

我們要在資料庫裡建立一張視圖,這樣我們可以獲得正確的語義和潛在的底層最佳化。

建立視圖方法如所示:

 

使用GridView來顯示時,我們不需要任何特殊處理,只要把視圖當作普通的表來查詢就可以了。

 

好了,用GridView顯示這回已經很好了,接下來我們看看這個表單還有什麼問題:

我們的提交表單看起來很土,居然要使用者手動去輸入公司id!

如前面所說,id這種東西,使用者看都看不明白,更何況輸入!所以應該提供一種更為友好的輸入方式。於是我們想,既然公司數目有限,做一個下拉式清單是個不錯的主意。我們只需要去插入模板裡面把TextBox換成DropDownList,把它的資料來源改成Company表的資料來源(注意,每個DropDownList有自己的資料來源),再用方式配置資料繫結:

好了,就這麼easy,我們的公司id欄位已經可以從dropdownlist裡面選了。

 

別忙,我們還有一個資料項目:id,其實我們希望這個id是自動產生的,而不是使用者提交的。這個的解決方案跟ASP.NET倒是沒什麼關係,只要在資料庫裡把id設定成自增的欄位就可以了,見圖:

然後我們要更新下資料來源和FormView模板,很簡單就不多說了.效果

現在我們有了一個功能完備的表單,讓我們來進一步提個需求,給資料表加個欄位:加入時間

id name company_id image adddate
1 包子 3 [bin] 2009-12-14
2 蒸餃 3 [bin] 2009-12-14
3 人才 1 [bin] 2009-12-14
4 MVP 1 [bin] 2009-12-14
5 Window 7 2 [bin] 2009-12-14

這個加入時間,同樣是不希望使用者自己去輸入的,希望每次插入資料的時候都使用當時的時間,而且我們必須避免使用者惡意更改。

其實這個問題,我們只需要再插入Sql語句上動點手腳就行了,重新設定FormView的資料來源,把Insert語句改掉:

INSERT INTO [commodity] ([name], [company_id], [image],[addtime]) VALUES (@name, @company_id, @image,CURRENT_TIMESTAMP)

再插入一條新的資料試試,可以按照預期運行了。T-SQL其實是很強大的語言,它甚至是圖靈完備的,我們在儲存時的很多邏輯操作和變換都可以通過T-SQL來完成,靈活使用T-SQL可以省去不少本來在C#中的工作量。

下一篇預告:

將會重點講講跟用戶端的整合,其實只要使用的時候遵守一定原則,ASP.NET一樣可以產生高品質HTML代碼。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.