乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      asp.net學(xué)習(xí)之SqlDataSource應(yīng)用詳解

       悟靜 2013-01-31

      通過 SqlDataSource 控件,可以使用 Web 服務(wù)器控件訪問位于關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)。其中可以包括 Microsoft SQL Server 和 Oracle 數(shù)據(jù)庫以及 OLE DB 和 ODBC 數(shù)據(jù)源。您可以將 SqlDataSource 控件與數(shù)據(jù)綁定控件(如 GridView、FormView 和 DetailsView 控件)一起使用,用極少代碼或甚至不用代碼來在 ASP.NET 網(wǎng)頁上顯示和操作數(shù)據(jù)。 
      1. 總述 
         SqlDataSource是基于ADO.net構(gòu)建的,會使用ADO.NET中的DataSet、DataReader和Command對象,我們看不見它們只不過是被封裝起來了。SqlDataSource是一個控件,所以允許以聲明控件的方式,而不是編程的方式使用這些ADO.NET對象。 
         SqlDataSource需要與其它數(shù)據(jù)綁定控件結(jié)合起來,以顯示數(shù)據(jù)。關(guān)于數(shù)據(jù)綁定控件,見http://www.cnblogs.com/shipfi/archive/2009/10/15/1584054.html
      2.一些常用的屬性 
         這些屬性不光可以在程序代碼中進(jìn)行設(shè)定,也可以在畫面中像使用控件方式一樣進(jìn)行設(shè)定。 
         2.1 ConnectionString屬性 : 獲取或設(shè)置特定于 ADO.NET 提供程序的連接字符串 
             如果是控件形式,可以在aspx頁面中進(jìn)行設(shè)定,代碼如下: 
      <!-- 連接字符串直接寫入ConnectionString屬性中 --> 
      <asp:SqlDataSource ID="srcMovies" runat="server" 
                 ConnectionString="Data Source=PC-200907130922;Initial Catalog=DawnEnterpriseDB;User ID=sa;Password=****" > 
      <!-- 連接字符串直接在web.config中 --> 
      <asp:SqlDataSource ID="srcMovies" runat="server" 
                 ConnectionString="<%$ ConnectionStrings:DawnEnterpriseDBConnectionString %>" >

      //ConnectionStrings為節(jié)名,DawnEnterpriseDBConnectionString為鍵盤名

           <!-- 如果是編程方式,在aspx.cs中,代碼如下:--> 
      SqlDataSource srcMov = new SqlDataSource(); 
      srcMov.ConnectionString = 
           WebConfigurationManager.ConnectionStrings["DawnEnterpriseDBConnectionString"].ConnectionString;

         2.2 ProviderName屬性:獲取或設(shè)置 .NET Framework 數(shù)據(jù)提供程序的名稱,使用該提供程序來連接基礎(chǔ)數(shù)據(jù)源。 
              如果不進(jìn)行設(shè)定,默認(rèn)的為 Microsoft SQL Server 的 ADO.NET 提供程序的名稱。 
              可以設(shè)定的值有:"System.Data.SqlClient"、"System.Data.OleDb"、"System.Data.Odbc"、"System.Data.OracleClient" 
              MSDN上記載:如果更改 ProviderName 屬性,會引發(fā) DataSourceChanged 事件,從而導(dǎo)致所有綁定到 SqlDataSource 的控件重新進(jìn)行綁定。

         2.3 執(zhí)行四個SQL語句的Command及相應(yīng)的CommandType 
             ●SelectCommand、InsertCommand、UpdateCommand、DeleteCommand 
             以上四個屬性都是String類型,可以提供SQL語句及存儲過程名稱。 
             如果是提供的存儲過程,則需要把相應(yīng)的SelectCommandType,InsertCommandType,UpdateCommandType,DeleteCommandType設(shè)定為"StoredProcedure"

         2.4 進(jìn)行過濾的Filter屬性 
             設(shè)定Filter屬性,可以過濾控件返回的行,例如: 
      <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
               ConnectionString="<%$ ConnectionStrings:DawnEnterpriseDBConnectionString %>" 
               SelectCommand="SELECT [product_id], [product_code], [product_name] FROM [product_main]” 
               Filter=”Product_name like '{0}%’ ” 
               Runat=”server”> 
               <FilterParameters> 
                     <asp:ControlParameter Name=”Title” ControlID=”txtTitle” /> 
               </FilterParameters> 
      </asp:SqlDataSource>

         2.5 改變數(shù)據(jù)源模型DataSourceMode屬性 
               可以改變數(shù)據(jù)源模型有:"DataReader",”DataSet”,默認(rèn)是DataSet.相比DataSet,DataReader可以更快速,但是,只有DataSet提供了緩存、過濾、分頁和排序功能
         2.6 ASP.NET參數(shù)對象屬性 
               通常,SQL 語句和存儲過程包括運(yùn)行時計(jì)算的參數(shù)。使用參數(shù)編寫的 SQL 語句稱作參數(shù)化 SQL 語句 
               ASP.NET 數(shù)據(jù)源控件可以接受輸入?yún)?shù),這樣就可以在運(yùn)行時將值傳遞給這些參數(shù)。 
               參數(shù)值可以從多種源中獲取。通過 Parameter 對象,可以從 Web 服務(wù)器控件屬性、Cookie、會話狀態(tài)、QueryString 字段、用戶配置文件屬性及其他源中為參數(shù)化數(shù)據(jù)操作提供值。 
               相應(yīng)的參數(shù)對象包括: 
                ● Parameter:表示任意一個靜態(tài)值 
                ● ControlParameter:表示控件值或頁面的屬性值 
                ● CookieParameter:表示瀏覽器的Cookie值 
                ● FormParameter:表示一個HTML表單字段的值 
                ● ProfileParameter:表示一個配置文件屬性值 
                ● QueryStringParameter:表示一個查詢字符串字段中的值 
                ● SessionParameter:表示一個存儲在會話狀態(tài)中的值 
               以上參數(shù)對象也具有相關(guān)屬性,包括ConvertEmptyStringToNull、DefaultValue、Direction、Name、Size、Type。參數(shù)對象可以顯式的聲明,對于GridView、DetailsView數(shù)據(jù)綁定控件,無需顯式的聲明參數(shù),原因是因?yàn)橐韵逻@句話的說明: 
      如果 GridView 控件等數(shù)據(jù)綁定控件綁定到 SqlDataSource 控件,在執(zhí)行更新或刪除操作期間,該數(shù)據(jù)綁定控件會同時將當(dāng)前記錄值和原始記錄值傳遞到 SqlDataSource 控件。當(dāng)前值傳遞到 Values 字典中。原始值傳遞到 Keys 或 OldValues 字典中。對于給定的數(shù)據(jù)操作,這些字典的內(nèi)容將會追加到基礎(chǔ) DbCommand 對象的 Parameters 集合中。 
               更具體的詳見以下MSDN說明: 
                ●對 SqlDataSource 控件使用參數(shù):ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_vwdcon/html/403ff44a-dd0b-484d-968e-dcd1dcd4c295.htm 
                ●對數(shù)據(jù)源控件使用參數(shù): ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_vwdcon/html/88622d04-2989-484e-93fe-594cd98dcf5f.htm 
                ●數(shù)據(jù)源控件如何為數(shù)據(jù)綁定字段創(chuàng)建參數(shù):ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_vwdcon/html/aa3f28c5-fd99-4978-8a66-c7709e0816c4.htm
         2.7 緩存屬性EnableCaching與CacheDuration 
               EnableCaching屬性表示是否需要緩沖,CacheDuration表示緩存的失效時間。更多的緩存說明,會另外進(jìn)行講述。 
                以下是MSDN中對于緩存的說明: 
          當(dāng) EnableCaching 屬性設(shè)置為 true 且 CacheDuration 屬性設(shè)置為一個大于 0 的值(該值指示在放棄緩存項(xiàng)之前,緩存存儲數(shù)據(jù)的秒數(shù))時,SqlDataSource 控件將自動緩存數(shù)據(jù)。值 0 表示無限期緩存。

          緩存的行為取決于持續(xù)時間和 CacheExpirationPolicy 屬性的組合。如果 CacheExpirationPolicy 屬性設(shè)置為 Absolute 值,則 SqlDataSource 將緩存第一次數(shù)據(jù)檢索操作的數(shù)據(jù),并將其保留在內(nèi)存中一段時間,這段時間最長為 CacheDuration 屬性所指定的時間量。如果需要內(nèi)存,可以在持續(xù)時間結(jié)束前釋放數(shù)據(jù)。然后,緩存在下一操作期間被刷新。如果 CacheExpirationPolicy 屬性設(shè)置為 Sliding 值,數(shù)據(jù)源控件將緩存第一次數(shù)據(jù)檢索操作的數(shù)據(jù),但是對于后面的每個操作,它都重置保留緩存的時間窗口。自上次 Select 操作以后,如果在等于 CacheDuration 值的時間段內(nèi)沒有任何活動,緩存將過期。

         僅當(dāng) SqlDataSource 控件處于 DataSet 模式時,它才可緩存數(shù)據(jù)。如果 SqlDataSource 控件設(shè)置為 DataReader 值并且啟用了緩存,則 Select 方法將引發(fā) NotSupportedException 異常。

                更多的MSDN說明,請參見:ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_system.web/html/5bfd5e37-43e6-8dca-4323-8454d465bd0b.htm 
      3. 詳敘sqlDataSource中的ASP.NET參數(shù)對象

          本段落是對2.6節(jié)探討的ASP.NET參數(shù)對象的擴(kuò)充說明,在2.6節(jié)說過,參數(shù)對象有Parameter、ControlParameter、CookieParameter… 
          這些asp.net參數(shù)對象有以下共通屬性: 
           ● ConvertEmptyStringToNull : 當(dāng)值為真時,如果參數(shù)接受一個空字符,空字符被轉(zhuǎn)換為NULL 
           ● DefaultValue : 參數(shù)默認(rèn)值 
           ● Direction : 參數(shù)方向,可以為INPUT、OUTPUT、InputOutput、ReturnValue 
           ● Name : 參數(shù)名稱 
           ● Size : 參數(shù)數(shù)據(jù)大小 
           ● Type : 參數(shù)類型,可以為TypeCode枚舉值

         3.1 ControlParameter對象 
               ControlParmeter對象可以表示一個控件的屬性值。可以表示任意一個與SqlDataSource控件位于同一頁面的控件的值 
               除了具備父類Parameter所有的屬性外,還具備以下屬性: 
                 ● ControlID : 控件ID 
                 ● PropertyName : 獲取或設(shè)置由ControlParameter 對象綁定到的ControlID 屬性標(biāo)識的控件的屬性名 
         對于PropertyName, 這里說明一下,假設(shè)需要從一個DropdownList1控件獲得參數(shù),關(guān)于DropdownList會有兩個值,一是SelectedText,一是 SelectValue.那是想要取參數(shù)時取DropdownList1.SelectedText值呢,還是 DropdownList1.SelectValue值?PropertyName就是設(shè)置控件的相應(yīng)屬性值,從控件的哪個屬性里取參數(shù)。對于 DropdownList控件,它的屬性還比較少。如果對于GridView控件,它的屬性就很多啦,包括PageIndex,Rows等等都可以作為參數(shù)來提取。Understand? 
         另外,對于PropertyName值并不必須要設(shè)定,如果不設(shè)定,控件參數(shù)對象會自動查找ControlVlaueProperty屬性裝飾的屬性。 DropdownList控件的這個屬性就是SelectedValue。關(guān)于這點(diǎn),請參考: 
         ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_system.web/html/f8be313f-8426-a7e7-904a-5a70cc816410.htm

      例1:設(shè)置ControlParameter參數(shù)
      <!--從DropdownList控件中提取參數(shù)--> 
      <asp:DropDownList id=”ddlMovies” 
      DataSourceID=”srcMovies” DataTextField=”Title” DataValueField=”Id” Runat=”server” />

      <asp:SqlDataSource id=”srcMovieDetails” 
      SelectCommand=”SELECT * FROM Movies WHERE Id=@Id” 
      ConnectionString=”<%$ ConnectionStrings:Movies %>” Runat=”server”
           <SelectParameters> 
               <asp:ControlParameter Name=”Id” ControlID=”ddlMovies” PropertyName=”SelectedValue” /> 
           </SelectParameters> 
      </asp:SqlDataSource>

          還有一種方法,就是參數(shù)想取得cs代碼類中相應(yīng)變量作為參數(shù)的值,是否可以?其實(shí),作為cs中的類,是繼承自System.Web.UI.Page的對象,而Page類又是自Control類繼承,所以可以使用ControlParameter對象來表示Page屬性的值 
      例2:從Page對象屬性中取得相應(yīng)ControlParameter對象 
      <script runat=”server”> 
      public string IPAddress 

           get { return Request.UserHostAddress; } 

      </script>

      <asp:SqlDataSource id=”srcGuestBook” 
          SelectCommand=”SELECT * FROM GuestBook ORDER BY Id DESC” 
          InsertCommand=”INSERT GuestBook (IPAddress,Name,Comments) 
          VALUES (@IPAddress,@Name, ConnectionString=”<%$ ConnectionStrings:GuestBook %>” 
          Runat=”server”> 
      <InsertParameters> 
          <asp:ControlParameter Name=”IPAddress” ControlID=”__page”   PropertyName=”IPAddress” /> 
      </InsertParameters>
       
      </asp:SqlDataSource> 
              以上,表示本頁P(yáng)age的控件對象ID是__page,這個值是Page類自動生的的ID。PropertyName的值為IPAddress,是在后臺代碼中定義的一個屬性。

      例3:動態(tài)在代碼中加入ControlParmeter對象 
      1 private void Page_Load(object sender, System.EventArgs e) 
      2 { 
      3         SqlDataSource sqlSource = new SqlDataSource( 
      4           ConfigurationManager.ConnectionStrings["MyNorthwind"].ConnectionString, 
      5           "SELECT FirstName, LastName FROM Employees WHERE Country = @country;"); 

      7         ControlParameter country = new ControlParameter(); 
      8         country.Name = "country"; 
      9         country.Type = TypeCode.String; 
      10         country.ControlID = "DropDownList1"; 
      11         country.PropertyName = "SelectedValue"; 
      12 
      13         // If the DefaultValue is not set, the DataGrid does not 
      14         // display anything on the first page load. This is because 
      15         // on the first page load, the DropDownList has no 
      16         // selected item, and the ControlParameter evaluates to 
      17         // String.Empty. 
      18         country.DefaultValue = "USA"; 
      19 
      20         sqlSource.SelectParameters.Add(country); 
      21 
      22         // Add the SqlDataSource to the page controls collection. 
      23         Page.Controls.Add(sqlSource); 
      24 
      25         DataGrid1.DataSource = sqlSource; 
      26         DataGrid1.DataBind(); 
      27 }

         3.2 CookieParameter對象 
             CookieParameter對象表示瀏覽器端的Cookie,除了具備父類Parameter的所有屬性外,還具備以下屬性: 
                 ● CookieName : 瀏覽器cookie的名稱 
      例4:如何使用CookieParameter
      <script runat=”server”> 
      void Page_Load() 

           if (Request.Cookies[“VoterId”] == null) { 
                // 創(chuàng)建VoterId Cookie對象 
                string identifier = Guid.NewGuid().ToString(); 
                HttpCookie voteCookie = new HttpCookie(“VoterId”, identifier); 
                voteCookie.Expires = DateTime.MaxValue; 
                Response.AppendCookie(voteCookie); 
           } 

      </script>

      <asp:FormView id=”frmVote” DataSourceID=”srcVote” DefaultMode=”Insert” Runat=”server”> 
      <InsertItemTemplate> 
          <asp:Label id=”lblFavoriteColor” AssociatedControlID=”rdlFavoriteColor” Runat=”server” /> 
          <asp:RadioButtonList id=”rdlFavoriteColor” SelectedValue=’<%#Bind(“Color”)%>' Runat=”server”> 
              <asp:ListItem Value=”Red” Text=”Red” Selected=”True” /> 
              <asp:ListItem Value=”Blue” Text=”Blue” /> 
              <asp:ListItem Value=”Green” Text=”Green” /> 
          </asp:RadioButtonList> 
          <asp:Button id=”btnSubmit” Text=”Submit” CommandName=”Insert” Runat=”server” /> 
      </InsertItemTemplate> 
      </asp:FormView> 
      <asp:SqlDataSource id=”srcVote” 
          SelectCommand=”SELECT * FROM Vote ORDER BY Id DESC” 
          InsertCommand=”INSERT Vote (VoterId,Color) VALUES (@VoterId,@Color)” 
               <!--Color參數(shù)從FormView中得到,VoterId參數(shù)從Cookie中得到--> 
          ConnectionString=”<%$ ConnectionStrings:Vote %>” Runat=”server”> 
      <InsertParameters> 
           <asp:CookieParameter Name=”VoterId” CookieName=”VoterId” /> 
      </InsertParameters> 
      </asp:SqlDataSource>

         3.3 FormParameter對象   
           FormParameter對象表示一個提效給WEB服務(wù)器的表單字段,通常,在asp.net中不用像asp中需要直接處理瀏覽器中的表單,因?yàn)楸韱翁幚砉δ芤呀?jīng)封裝在表單控件中了。
      例5:如何使用FormParameter 
      <script runat=”server”> 
      void Page_Load() 

          // 如果是點(diǎn)擊了AddMove按鈕 
          if (Request.Form[“AddMovie”] != null) 
              srcMovies.Insert(); // 觸發(fā)sqlDatasource的Insert事件 

      </script>

      <body> 
          <form action=”ShowFormParameter.aspx” method=”post”> <!-- 需要提交的表單 --> 
               <label for=”txtTitle”>Movie Title:</label> 
               <input name=”txtTitle” /> 
               <br /> 
              <label for=”txtDirector”>Movie Director:</label> 
              <input name=”txtDirector” /> 
              <br /> 
              <input name=”AddMovie” type=”submit” value=”Add Movie” /> 
          </form>

          <form id=”form1” runat=”server”>    <!--服務(wù)器Form控件 --> 
          <asp:GridView id=”grdMovies” DataSourceID=”srcMovies” Runat=”server” /> <!--GirdView控件,顯示數(shù)據(jù) --> 
          <asp:SqlDataSource id=”srcMovies” SelectCommand=”SELECT * FROM Movies” 
                  InsertCommand=”INSERT Movies (Title,Director,CategoryId,DateReleased) VALUES (@Title,@Director,0,’12/25/1966’)” 
                 ConnectionString=”<%$ ConnectionStrings:Movies %>” Runat=”server”> 
            <InsertParameters> 
                <asp:FormParameter Name=”Title” FormField=”txtTitle” DefaultValue=”Untitled” /> 
                <asp:FormParameter Name=”Director” FormField=”txtDirector” DefaultValue=”Allen Smithee” /> 
            </InsertParameters> 
          </asp:SqlDataSource> 
          </form> 
      </body>

         3.4 ProfileParameter對象    
             ProfileParameter對象可以用來提取web.config中的Profile屬性,ProfileParameter除包含Parameter基類的所有屬性外,還具備以下屬性: 
                ● ProfileName: Profile屬性的名稱 
      例6:如何使用ProfileParameter對象 
      <!-- web.config配置 --> 
      <system.web> 
          <profile enabled=”true”> 
              <properties> 
                  <add name=”DisplayName” defaultValue=”Anonymous” /> 
              </properties> 
           </profile> 
      </system.web>

      <!-- aspx處理頁面 –> 
      <!-- 留言版的輸入框 --> 
      <asp:FormView id=”frmGuestBook” DataSourceID=”srcGuestBook” DefaultMode=”Insert” Runat=”server”> 
      <InsertItemTemplate> 
            <asp:Label id=”lblComments” Text=”Enter Your Comments:” Runat=”server” /> <br /> 
            <asp:TextBox id=”txtComments” Text=’<%# Bind(“Comments”) %>' TextMode=”MultiLine” Columns=”50” 
                     Rows=”4” Runat=”server” /> <br /> 
             <asp:Button id=”btnInsert” Text=”Add Comments” CommandName=”Insert” Runat=”server” /> 
      </InsertItemTemplate> 
      </asp:FormView>

      <!-- SqlDataSource處理 --> 
      <asp:SqlDataSource id=”srcGuestBook” 
             SelectCommand=”SELECT Name,Comments,EntryDate FROM GuestBook ORDER BY Id DESC” 
             InsertCommand=”INSERT GuestBook (Name,Comments) VALUES (@Name,@Comments)” 
             ConnectionString=”<%$ ConnectionStrings:GuestBook %>” Runat=”server”> 
      <InsertParameters> 
              <asp:ProfileParameter Name=”Name” PropertyName=”DisplayName” /> 
         </InsertParameters> 
      </asp:SqlDataSource>

         3.5 QueryStringParameter對象    
             QueryStringParameter對象可以表示傳遞給頁面的任何查詢字符串,QueryStringParameter除包含Parameter基類的所有屬性外,還具備以下屬性: 
                ● QueryStringField: 所表示查詢字符串的名稱 
      例7:如何使用QueryStringField對象 
      <!-- 鏈接頁面 --> 
      <asp:GridView id=”grdMovies” DataSourceId=”srcMovies” AutoGenerateColumns=”false” 
               ShowHeader=”false” Runat=”server”> 
          <Columns> 
              <asp:HyperLinkField DataTextField=”Title” DataNavigateUrlFields=”Id” 
                 DataNavigateUrlFormatString=”ShowQueryStringParameterDetails.aspx?id={0}” /> 
          </Columns> 
      </asp:GridView>

      <asp:SqlDataSource id=”srcMovies” SelectCommand=”SELECT * FROM Movies” 
               ConnectionString=”<%$ ConnectionStrings:Movies %>” Runat=”server” />

      <!-- 鏈接后的處理頁面 --> 
      <asp:SqlDataSource id=”srcMovie” 
              SelectCommand=”SELECT * FROM Movies WHERE Id=@Id” 
              ConnectionString=”<%$ ConnectionStrings:Movies %>” Runat=”server”> 
          <SelectParameters> 
              <asp:QueryStringParameter Name=”Id” QueryStringField=”Id” /> 
          </SelectParameters> 
      </asp:SqlDataSource>

         3.6 SessionParameter對象    
             SessionParameter對象表示存儲在Session狀態(tài)中的項(xiàng)目,SessionParameter除包含Parameter基類的所有屬性外,還具備以下屬性: 
                ● SessionField: 所表示會話狀態(tài)中的項(xiàng)目名稱 
      例8:如何使用SessionParameter對象

      <script runat=”server”> 
      void Page_Load() 

          Session[“MovieCategoryName”] = “Animation”; 

      </script>

      <asp:SqlDataSource id=”srcMovies” 
              SelectCommand=”SELECT Name As Category,Title,Director FROM Movies 
                                        INNER JOIN MovieCategories ON CategoryId = MovieCategories.id 
                                        WHERE Name=@Name” 
              ConnectionString=”<%$ ConnectionStrings:Movies %>”   Runat=”server”> 
          <SelectParameters> 
              <asp:SessionParameter Name=”Name” SessionField=”MovieCategoryName” /> 
          </SelectParameters> 
      </asp:SqlDataSource>
      4. 通過程序控制SqlDataSource對象 
         SqlDataSource控件一般都與數(shù)據(jù)綁定控件一起使用,在本節(jié)中,可以知道、 
             ● 如何通過在代碼中直接使用SqlDataSource控件的屬性和方法來創(chuàng)建參數(shù)、 
             ● 如何執(zhí)行選擇、插入、更新和刪除命令

         4.1 添加ADO.NET參數(shù) 
              SqlDataSource并沒有直接與數(shù)據(jù)交互,它是通過ADO.NET對象與數(shù)據(jù)庫交互的。當(dāng)和SqlDataSource控件一起使用時,所有聲明的ASP.NET參數(shù)也應(yīng)轉(zhuǎn)換成相應(yīng)的ADO.NET參數(shù) 
              在某些情況下,希望直接處理ADO.NET參數(shù),可以通過在執(zhí)行相應(yīng)的命令前通過程序增加額外的ADO.NET參數(shù) 
      例9:通過程序增加SqlDataSource的SelectCommand參數(shù) 
      <script runat=”server”>
      protected void srcGuestBook_Inserting(object sender, SqlDataSourceCommandEventArgs e)
      {
          // SqlDataSourceCommandEventArgs 為 SqlDataSource 控件的 Updating、Deleting 和 Inserting 事件提供數(shù)據(jù)。
          // MSDN上這樣解釋SqlDataSourceCommandEventArgs參數(shù):
          /* 因?yàn)?SqlDataSourceCommandEventArgs 類是從 CancelEventArgs 類派生的,所以可以通過將 Cancel 屬性設(shè)置為 true,
             取消掛起的 SqlDataSource 數(shù)據(jù)庫命令。通過訪問由 Command 屬性公開的 DbCommand 對象,可以在運(yùn)行此命令之前,
             檢查和操作 CommandText、Parameters 集合以及其他命令屬性。*/
          e.Command.Parameters.Add(new SqlParameter(“@Name”, User.Identity.Name));   // 為Insert操作添加一個參數(shù)
      }
      </script>
      <!-- aspx處理頁面 –>
      <!-- 留言版的輸入框 -->
      <asp:FormView id=”frmGuestBook” DataSourceID=”srcGuestBook” DefaultMode=”Insert” Runat=”server”>
      <InsertItemTemplate>
            <asp:Label id=”lblComments” Text=”Enter Your Comments:” Runat=”server” /> <br />
            <asp:TextBox id=”txtComments” Text=’<%# Bind(“Comments”) %>' TextMode=”MultiLine” Columns=”50”
                     Rows=”4” Runat=”server” /> <br />
             <asp:Button id=”btnInsert” Text=”Add Comments” CommandName=”Insert” Runat=”server” />
      </InsertItemTemplate>
      </asp:FormView>

      <!-- SqlDataSource處理 -->
      <asp:SqlDataSource id=”srcGuestBook”
             SelectCommand=”SELECT Name,Comments,EntryDate FROM GuestBook ORDER BY Id DESC”
             InsertCommand=”INSERT GuestBook (Name,Comments) VALUES (@Name,@Comments)”
             ConnectionString=”<%$ ConnectionStrings:GuestBook %>” Runat=”server” OnInserting=”srcGuestBook_Inserting”>
      <!-- 與例6不同的是,這里無需添加相應(yīng)的參數(shù)對象,參數(shù)對象通過srcGuestBook_Inserting事件進(jìn)行追加 -->
      </asp:SqlDataSource>

              另外,需要說明的是,Inserting、Updating、Deleting操作傳遞給函數(shù)的都是SqlDataSourceCommandEventArgs參數(shù),但Filtering傳遞給函數(shù)的卻是SqlDataSourceFilteringEventArgs對象,使用以下方法取得已和設(shè)定的參數(shù):

      protected void SqlDataSource1_Filtering(object sender, SqlDataSourceFilteringEventArgs e)
      {
           if (e.ParameterValues.Count > 0)
           {
                Label1.Text = e.ParameterValues[0].ToString();
           } 
           if (Textbox1.Text == "")
          {    // 添加參數(shù):第一個為參數(shù)名,第二個為參數(shù)Value。
                 e.ParameterValues.Clear();
                 e.ParameterValues.Add("FullName", "Nancy Davolio");
           }
      }

          4.2 執(zhí)行Insert、Update、Delete命令 
               其實(shí),執(zhí)行相應(yīng)的命令,只要調(diào)用SqlDataSource對象的Insert()、Update()、Delete()方法就可以了。 
      例10:通過程序,執(zhí)行SqlDataSource Insert命令

      <script runat=”server”>

      protected void btnAddEntry_Click(object sender, EventArgs e)
      {
          srcGuestBook.InsertParameters[“Name”].DefaultValue = txtName.Text;
          srcGuestBook.InsertParameters[“Comments”].DefaultValue = txtComments.Text;
          srcGuestBook.Insert();
      }
      </script>

      <asp:TextBox id=”txtName” Runat=”server” /> <!-- 輸入值1 -->
      <asp:TextBox id=”txtComments” TextMode=”MultiLine”
                Columns=”50” Rows=”2” Runat=”server” /> <!-- 輸入值2 -->
      <asp:Button id=”btnAddEntry” Text=”Add Entry” Runat=”server” OnClick=”btnAddEntry_Click” />

      <asp:SqlDataSource id=”srcGuestBook” ConnectionString=”<%$ ConnectionStrings:GuestBook %>”
               SelectCommand=”SELECT Name,Comments FROM GuestBook ORDER BY Id DESC”
               InsertCommand=”INSERT GuestBook (Name,Comments) VALUES (@Name,@Comments)”
               Runat=”server”>
          <InsertParameters>
              <asp:Parameter Name=”Name” />
              <asp:Parameter Name=”Comments” />
          </InsertParameters>
      </asp:SqlDataSource>

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多