程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP入門教程 >> ASP+學習筆記(三)

ASP+學習筆記(三)

編輯:ASP入門教程
8).數據訪問的定制
    除了DataGrid之外,還有DataList和Repeater,可以更加靈活使用,不過你需要提供模板,
用控件templates
    他們也有屬性DataSource,可以賦予一個ICollection對象,ItemTemplate控件指定每一個記錄
顯示的樣子,例:
    <ASP:Repeater id="MyRepeater" runat="server">
        <template name="itemtemplate">
            <%# DataBinder.Eval(Container.DataItem,"name")%>
        </template>
    </ASP:Repeater>
    其中:Container表示控件之外的第一個含System.Web.UI.INamingContainer的控件,本例中
是一個System.Web.UI.WebControls,RepeaterItem,包含了一個DataItem的屬性。
    另外,還可以使用HeaderTemplate和FooterTemplate。
    DataList有更強的控制能力,比如他的RepeaterCoumns屬性可指定一行重復幾次,RepeatDirection
指定方向。
    插入LinkButton控件可以引起select事件,DataList中可設OnSelectedIndExchanged屬性指定事件Handler.
    例:
    <ASP:DataList id="dl" OnSelectedIndExchanged="dl_Select">
        <ASP:LinkButton Command="select" runat="server">
            <%#DataBinder.Eval(Container.DataItem."title")%>
        </ASP:LinkButton>
        ......
        
    <script language="c#" runat="server">
    void dl_Select(Object sencer,EventArgs E){
    ......
    }
    </script>
    
    注意,可能有多個事件,比如Edit/Update/Cancel,所以可以用一個統一的OnItemCommand來處理,
憑Command判斷到底是什麼事件。例:
    void dl_select(Object src,DataListCommandEventArgs E){
        String command=((LinkButton)E.CommandSource).Text;
        switch(command)
        {case "discuss":.....break;
        case "ratings":......break;
        }
    }
    <ASP:LinkButton Command="ratings" runat="server">
        VIEw ratings
    </ASP:LinkButton>
    更妙的是,DataList還可以支持Edit和Select模板!!
    例:
    void MyDataList_Edit(Object sender,DataListCommandEventArgs E){
        MydataList.EditItemIndex = (int)E.Item,ItemIndex;
        //設定誰被選中進行編輯
        ......//重新幫定
        }
    void MyDataList_Update(Object sender,DataListCommandEventArgs E){
        String PRice = ((HtmlInputText)E.Item.FindControl("edit_price")).Value;
        ......
        MyDataList.EditItemIndex=-1;
        }
        ......
    <template name="edititemtemplate">
        ......
        <b>Price:</b><input id="edit_price" type="text">
        .
        .
        .
    這可以很方便地用在系統後台維護上。
    問題,上例中模板中的控件剛好只有一個,所以FindControls起作用了,但如果有多個呢?
    可以通過DataList的Items集合來遍歷,如:
    for(int i=0;i<MyDataList.Items.count;i++)
        String isChecked = ((CheckBox)MyDataList.Items[i].FindControls("save")).checked.ToString();
        
    <template name="itemtemplate">
        <ASP:checkbox id="save" runat=server>
    </template>
    
    
9).商業控件
   。應用的bin目錄
   在ASP中的組件需要用regsvr32注冊,不方便遠程管理,ASP+中只需要放到應用的/bin目錄下即可。
   <%Import NameSpace="helloworld"%>引入名稱空間,config文件來指定使用哪些控件,例:
   <configuration>
       <compilation>
           <assemblIEs>
               <add assembly="System.Data"/>
               <add assembly="System.Web.Services"/>
               <add assembly="System.Drawing"/>
               <add assembly="*" />
           </assemblIEs>
       </compilation>
   </configuration>
   
   其中,前三個是全局的,最後一個是管bin目錄下的。
   
10).寫控件
    略。
    注意需要從Controls派生(System.Web.UI.Controls)
    
11).WebForms控件參考
    兩大類,
    一是System.Web.UI.HtmlControls,以Html打頭,多為Web頁面上顯示的。
    二是System.Web.UI.WebControls,附加的,如DataGrid等。
    具體略。
    
12).WebForms表達式參考
    <%%>代碼塊,<%=%>也支持的。
    <script runat="server">
    服務器控件用:<ASP:Lable .....runat="server">
    Html服務器控件用: <span id="Message" runat="server">
    數據幫定:<%# %>
    對象:<object runat="server">,如:
        <object id="items" class="System.collections.ArrayList" runat="server">
    服務器端注釋:<%--  comment --%>
    服務器端包含:<--#include file="..." -->
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved