asp.net 2.0的一個綁定技巧

來源:互聯網
上載者:User
還是在繼續做我的畢業設計,現在已經做到前台代碼了。在前台頁面的資料繫結時又遇到了一個問題,終於通過自己的努力解決了,在這裡同大家分享一下。(不知道以前有沒有類似的文章)
前言:
在BLL層中的基本上都是CRUD的操作,分別對應資料庫中的INSERT、SELECT、UPDATE、DELETE語句(預存程序),在DAL層讀資料時(Read/Select),一般是返回一行資料,或是多行資料,回到BLL層時就對應一個邏輯對象或是一組對象,如IList<T>。這樣的話,在前台頁面時就可以利用ObjectDataSource和GridView等資料繫結控制項顯示資料。
問題:
我們知道ObjectDataSource控制項需要指定資料對象的INSERT、SELECT、UPDATE、DELETE方法,但是問題就在這裡,我們往往需要在這同一個GridView中顯示另外一個資料對象的某幾項屬性,這時ObjectDataSource就顯得無能為力了,我們需要自己動手來綁定資料了。
解決:
廢話說完了,下面就以My Code直接來說明問題了。
ObjectDataSource的資料對象為Forum,Select方法名為"GetForums",代碼如下<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetForums" TypeName="RFID.BLL.Forum"></asp:ObjectDataSource>

這樣的話直接利用GridView就可以顯示資料了,但是我還需要顯示Forum的最後更新的貼子(Post),這就涉及到另外一個資料對象"Post",但是ObjectDataSource只返回"Forum"對象,只能在頁面中自己寫資料繫結的代碼了。
首先在前台頁面的後置代碼(aspx.cs)中添加一個函數,用來返回PostInfo對象。protected PostInfo GetLastPost(object forumID)
        {
            int ForumID = Convert.ToInt32(forumID);
            Forum forum = new Forum();
            return forum.GetLastPost(ForumID);
 
        }

其中值得注意的地方是參數的類型必須是object類型的,這是由於前台頁面使用Eval("forumID")綁定時返回的就是object類型的。
下面接著我們就可以在前台頁面中自訂綁定了,給GridView增加一個ItemTemplate,插入以下代碼片斷:<asp:Literal ID="Post" runat="server" Text='<%# GetLastPost(Eval("forumID")).Title %>' ></asp:Literal>

其中Text='<%# GetLastPost(Eval("forumID")).Title(Title為資料對象PostInfo的一個屬性)便是利用了自訂函數和Eval()實現了資料繫結,從而解決了問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.