<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      與ObjectDataSource共舞

      4,ORM組件XCode(與ObjectDataSource共舞)

       

      XCode為了能更方便的解決大部分問題,不得不“屈身”于ObjectDataSource。

      先上一個經典例子(ObjectDataSource+GridView)(ObjectDataSource):

       

      <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
          AutoGenerateColumns
      ="False" DataKeyNames="ID" DataSourceID="ObjectDataSource1"
          EnableModelValidation
      ="True">
          
      <Columns>
              
      <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True"
                  SortExpression
      ="ID" />
              
      <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
              
      <asp:BoundField DataField="ParentID" HeaderText="ParentID" SortExpression="ParentID" />
              
      <asp:BoundField DataField="test" HeaderText="test" SortExpression="test" />
              
      <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
          
      </Columns>
      </asp:GridView>
      <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="PurpleSun.Center.Area"
          DeleteMethod
      ="Delete" EnablePaging="True" InsertMethod="Insert" OldValuesParameterFormatString="original_{0}"
          SelectCountMethod
      ="FindCountByName" SelectMethod="FindAllByName" SortParameterName="orderClause"
          TypeName
      ="PurpleSun.Center.Area" UpdateMethod="Save">
          
      <SelectParameters>
              
      <asp:Parameter Name="name" Type="String" />
              
      <asp:Parameter Name="value" Type="Object" />
              
      <asp:Parameter Name="orderClause" Type="String" />
              
      <asp:Parameter Name="startRowIndex" Type="Int32" />
              
      <asp:Parameter Name="maximumRows" Type="Int32" />
          
      </SelectParameters>
      </asp:ObjectDataSource>

       

       

      下面用截圖演示整個過程:

      拖GridView和ObjectDataSource

      wps_clip_image-15245

      選中ObjectDataSource,注意右上角的智能標記

      wps_clip_image-23943

      配置數據源

      wps_clip_image-16852

      這里只列出數據組件,為什么這里只有我們的Area類?為什么?我們看看實體類

      wps_clip_image-12458

      就是DataObject特性起的作用,應該說,所有加了該特性的類,都會被當作數據組件在ObjectDataSource配置里面出現。當然,不加DataObject特性也是可以的,但是在ObjectDataSource配置的時候,就不能勾選數據組件了,那樣會列出所有類(是的,所有類)。

      選擇Area類,繼續

      wps_clip_image-24997

      繼續猜測,這里能列出這些方法,應該也是有特性的,那就是DataObjectMethod特性啦。

      wps_clip_image-9268

      第一個參數代表方法類型(查詢、插入、更新、刪除),第二個參數表示是否默認方法,默認方法會在配置ObjectDataSource時被默認選中。

      當然啦,另外三個配置頁也是有的(這里以Update為例)

      wps_clip_image-12855

      wps_clip_image-24612

      最后一步定義參數,在這里就不定義了

      wps_clip_image-16010

      可以看到,左邊已經列出了前面選擇的Select方法的所有參數。

      來看看一個神奇的地方

      wps_clip_image-21754wps_clip_image-27958

      ObjectDataSource可以把查詢參數綁定到Cookie、控件、Request.Form、Request.QueryString、Session等。我們一般綁定到控件,做查詢的時候非常有用。每一個查詢項作為一個參數,然后在這里綁定到對應的控件;也經常綁定到QueryString,比如表單頁面編輯數據的時候,這里綁定主鍵,然后就能把相應的對象找出來。

      這里神奇的地方就在于綁定。需要做復雜查詢的時候,可以在界面上放置查詢控件

      wps_clip_image-140

      然后編寫一個對應的查詢方法,當然要加上DataObjectMethod特性了,然后在ObjectDataSource配置的時候把參數和控件綁定起來

      wps_clip_image-9814

      (關于這類高級查詢后面專門介紹,這里僅僅是為了說明綁定的神奇)

      綁定的神奇就在于,界面控件問數據源控件(如ObjectDataSource)要數據的時候,數據源控件開始著手準備參數,反射讀取綁定控件的值作為參數,并轉為相應的類型,然后再反射調用實體類的查詢方法(如Search)。

      到這里,ObjectDataSource的基本配置已經完成,絕大多數ORM框架對ObjectDataSource的支持,也僅僅是到這里而已。而XCode的模型,是完全滿足ObjectDataSource要求的,下面繼續高級功能

      wps_clip_image-31176

      這是ObjectDataSource控件屬性中的分頁類屬性,第一項啟用分頁,第三項指定用于查詢所有記錄數的方法(前面提到過查詢方法是成對出現的,這里的FindAllByName和FindCountByName就是一對),至于第二項和第四項,是不是很熟悉?

      wps_clip_image-17527

      wps_clip_image-6921

      這兩個方法,一個返回實體集合,一個返回總行數,而參數則是一摸一樣。這就是ObjectDataSource對分頁查詢的要求,如果沒有第二個,ObjectDataSource也能提供查詢數據功能,但是就沒辦法分頁了。

      回過頭了,仔細看看最后兩個參數的名稱,是不是跟ObjectDataSource屬性中的那兩個一摸一樣?所以,XCode使用這兩個名字作為參數名,正是這個原因。如果查詢方法使用的不是這兩個參數,那么在配置ObjectDataSource的時候自己跟著改就是了。

      這兩個參數,第一個是從哪一行開始讀數據,第二個是返回的最大行數,其實就是每頁行數。這種分頁結構,跟別的絕大部分分頁控件什么的都不相同。所以,并不是XCode的分頁另類,而是別的分頁才是另類,XCode是正統(哈哈)。

      除了分頁屬性,再看看一個排序屬性

      wps_clip_image-8804

      正是查詢方法的倒數第三個參數。GridView在排序的時候,會給這個參數傳遞ID Asc或Name Desc等。而查詢方法內部,正是根據這個參數,以及兩個分頁參數,拼接SQL語句進行查詢的。

      至此,ObjectDataSource配置完成。打開GridView的智能標記,選擇ObjectDataSource控件作為數據源,GridView即可自動生成列

      wps_clip_image-7754

      當然,這個列并不是數據庫字段,而是實體類的屬性。

      在智能標記面板上可以看到,啟用分頁和啟用排序可以勾選了,正是因為剛才在ObjectDataSource中配置好了。都勾上!

      運行,看效果

      wps_clip_image-6948

      界面很丑,不過那是美工的事情了。試試分頁(打開OrmDebug開關,查看SQL語句)

      wps_clip_image-8101

      執行的SQL:

      Select * From (Select row_number() over(Order By ID Desc) as row_number, * From Area) XCode_Temp_b Where row_Number Between 71 And 80

      這是XCode生成的分頁語句,因為現在測試環境是SQL2008,隨意生成了row_number的分頁,如果是別的數據庫,就會不同了。但那是XCode的事情,開發者不需要關心。

      再試試在分頁的基礎上排序(點擊Name):

      wps_clip_image-31464

          執行的SQL:

      Select * From (Select row_number() over(Order By Name) as row_number, * From Area) XCode_Temp_b Where row_Number Between 81 And 90

          排序已經改為Order By Name了,再點一次Name,執行SQL:

      Select * From (Select row_number() over(Order By Name DESC) as row_number, * From Area) XCode_Temp_b Where row_Number Between 81 And 90

          完全滿足要求!

       

          BTW:GridView那里,其實還可以啟用編輯和刪除的,因為配置ObjectDataSource的時候,默認已經配置了編輯和刪除的方法。

       

          最后,目的已經達到,或許你還沒有發現,到這里我們還沒有手工編寫任何代碼呢!

       

          XCode與ObjectDataSource共舞可以得到非常美的開發效果,但是,上面的模式,已經是三年前的做法了,我們現在有了更好的工業級的做法——批量生產

       

      大石頭

      新生命開發團隊

      2010-08-24 13:25

      posted @ 2010-09-13 01:39  大石頭  閱讀(5445)  評論(6)    收藏  舉報
      主站蜘蛛池模板: 中文文字幕文字幕亚洲色| 国产精品一区二区三区自拍 | 国产免费午夜福利片在线| 女人喷液抽搐高潮视频| 青草视频在线观看视频| 亚洲熟少妇一区二区三区| 麻豆精品一区二区视频在线| 国产特级毛片aaaaaa高清| 天堂中文8资源在线8| 国产内射xxxxx在线| 啊轻点灬大JI巴太粗太长了在线| 亚洲av影院一区二区三区| 中文字幕精品亚洲二区| 产综合无码一区| 少妇粗大进出白浆嘿嘿视频| 久久久无码精品午夜| 亚洲午夜激情久久加勒比| 九九热在线视频只有精品| 欧美色欧美亚洲高清在线观看| 国内自拍av在线免费| 亚洲成av人在线播放无码| yyyy在线在片| 日韩在线观看精品亚洲| 国产精品区一二三四久久| 国产精品视频亚洲二区| 日韩熟女精品一区二区三区| 亚洲一区二区av免费| 亚洲一区二区三区啪啪| 免费人成在线观看网站| 国产专区一va亚洲v天堂| 亚洲性一交一乱一伦视频| 国产亚洲视频免费播放| av在线播放国产一区| 欧美一区二区三区成人久久片| 国产精品老熟女露脸视频| 德钦县| 日韩一区二区黄色一级片| caoporn成人免费公开| 在线观看国产精品日韩av| 国产精品亚洲一区二区在| 日韩伦理片一区二区三区|