2017.12.4 Contains方法、jquery模擬觸發(fā)事件、面向?qū)ο蟮娜齻€基本特征、前臺篩選、下拉框列表控件綁定數(shù)據(jù)

第一組:陳輝 string,List,Dictionary的Contains方法

1. string的Contains方法:
string s1 = "The quick brown fox jumps over the lazy dog"; 
string s2 = "fox"; 
bool b; 
b = s1.Contains(s2); 

如以上,返回的b的值是true,一般我們進行判斷時,s1的字符串要比s2長,就是判斷s2是否在s1里面。

2. List的Contains方法

應(yīng)用環(huán)境:從數(shù)據(jù)庫中查詢出滿足一系列條件的記錄,然后以對象的形式封裝到List中去。此時假設(shè)有兩個條件A和B,滿足A的記錄集和為ListA,滿足B的記錄集合為ListB,現(xiàn)在要將ListA和ListB合并為一個List,注意ListA和ListB中可能有重復的記錄(因為可能某條記錄即滿足條件A又滿足條件B),要過濾掉重復的記錄。

方法過程:我們假設(shè)List中存放的對象都是Order對象,屬性orderId用于標識一個唯一的Order對象。

          List<order> list = new ArrayList<Order>(); 
          if(ListA!=null){ 
            Iterator it= ListA.iterator(); 
            while(it.hasNext()){ 
                list.add((Order)it.next()); 
            } 
         } 
if(ListB!=null){ 
            Iterator it= ListB.iterator(); 
            while(it.hasNext()){ 
              Order o=(Order)it.next(); 
              if(!list.contains(o)) 
                  list.add(o); 
            } 
         } 

就是用來判斷List里面是否包含此元素,但是很多人說不靠譜,識別不準確。

3. Dictionary的Contains方法

我要用來取innerUserList關(guān)于innerUserAheadList的補集:事先我已經(jīng)得到了innerUserList和innerUserAheadList,前者包括后者,我們需要將后者從前者里面剔除

image.png

據(jù)說,Dictionary的ContainsKey()方法的用時是很短的,效率比較高。

Dictionary里面還有ContainsValue()和Contains()方法,用法類似,都比較好用。


第二組:徐晉 jquery模擬觸發(fā)事件

有時候,需要通過模擬用戶操作,來達到單擊的效果。例如在用戶進入頁面后,就觸發(fā)click事件,而不需要用戶去主動單擊。

在JQuery中,可以使用trigger()方法完成模擬操作。例如可以使用下面的代碼來觸發(fā)id為btn的按鈕的click事件。

    $('#btn').trigger("click");

這樣,當頁面加載完畢后,就會立刻輸出想要的效果。也可以直接簡寫click(),來達到同樣的效果:

$('#btn').click();
  • 觸發(fā)自定義事件

trigger()方法不僅能觸發(fā)瀏覽器支持的具有相同名稱的事件,也可以觸發(fā)自定義名稱的事件。例如為元素綁定一個“myClick”的事件,JQuery代碼如下:

    $('#btn').bind("myClick", function(){  
         $('#test').append("<p>我的自定義事件.</p>");  
     });

想要觸發(fā)這個事件,可以使用以下代碼來實現(xiàn):

    $('#btn').trigger("myClick");
  • 傳遞數(shù)據(jù)

trigger(type[,data])方法有兩個參數(shù),第1個參數(shù)是要觸發(fā)的事件類型,第2個參數(shù)是要傳遞給事件處理函數(shù)的附加數(shù)據(jù),以數(shù)組形式傳遞。通常可以通過傳遞一個參數(shù)給回調(diào)函數(shù)來區(qū)別這次事件是代碼觸發(fā)的還是用戶觸發(fā)的。

下面是一個傳遞數(shù)據(jù)的例子。

    $(function(){  
       $('#btn').bind("myClick", function(event, message1, message2){  
                     $('#test').append( "<p>"+message1 + message2 +"</p>");  
        });  
       $('#btn').click(function(){  
            $(this).trigger("myClick",["我的自定義","事件"]);  
       }).trigger("myClick",["我的自定義","事件"]);  
    })
  • 執(zhí)行默認操作

trigger()方法觸發(fā)事件后,會執(zhí)行瀏覽器默認操作。例如:

$("input").trigger("focus");

以上代碼不僅會觸發(fā)為<input>元素綁定的focus事件,也會使<input>元素本身得到焦點(這是瀏覽器的默認操作)。

如果只想觸發(fā)綁定的focus事件,而不想執(zhí)行瀏覽器默認操作,可以使用jQuery中另一個類似的方法——triggerHandler()方法。

    $("input").triggerHandler("focus");

該方法會觸發(fā)<input>元素上綁定的特定事件,同時取消瀏覽器對此事件的默認操作,即文本框只觸發(fā)綁定的focus事件,不會得到焦點。


第三組: 面向?qū)ο蟮娜齻€基本特征

面向?qū)ο蟮娜齻€基本特征是:封裝、繼承、多態(tài)。


image.png
封裝

封裝最好理解了。封裝是面向?qū)ο蟮奶卣髦唬菍ο蠛皖惛拍畹闹饕匦浴?/p>

封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。

繼承

面向?qū)ο缶幊?(OOP) 語言的一個主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進行擴展。

通過繼承創(chuàng)建的新類稱為“子類”或“派生類”。

被繼承的類稱為“基類”、“父類”或“超類”。

繼承的過程,就是從一般到特殊的過程。

要實現(xiàn)繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現(xiàn)。

在某些 OOP 語言中,一個子類可以繼承多個基類。但是一般情況下,一個子類只能有一個基類,要實現(xiàn)多重繼承,可以通過多級繼承來實現(xiàn)。

繼承概念的實現(xiàn)方式有三類:實現(xiàn)繼承、接口繼承和可視繼承。

  • 實現(xiàn)繼承是指使用基類的屬性和方法而無需額外編碼的能力;
  • 接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現(xiàn)的能力;
  • 可視繼承是指子窗體(類)使用基窗體(類)的外觀和實現(xiàn)代碼的能力。

在考慮使用繼承時,有一點需要注意,那就是兩個類之間的關(guān)系應(yīng)該是“屬于”關(guān)系。例如,Employee 是一個人,Manager 也是一個人,因此這兩個類都可以繼承 Person 類。但是 Leg 類卻不能繼承 Person 類,因為腿并不是一個人。

抽象類僅定義將由子類創(chuàng)建的一般屬性和方法,創(chuàng)建抽象類時,請使用關(guān)鍵字 Interface 而不是 Class。
OO開發(fā)范式大致為:劃分對象→抽象類→將類組織成為層次化結(jié)構(gòu)(繼承和合成) →用類與實例進行設(shè)計和實現(xiàn)幾個階段。

多態(tài)

……

詳情鏈接:http://blog.csdn.net/ztj111/article/details/1854611


第四組:李俊 前臺篩選

在對InnerUser表進行查詢時,由于后臺查詢方法調(diào)用的是已封裝的GetMySubUsers方法,而該查詢方法參數(shù)中沒有“角色”這個參數(shù)(InnerUser表含有“角色”字段)。現(xiàn)如今希望通過前臺輸入角色名將所有該角色的人員查出,既然后臺封裝方法改不了,那就在前臺對所有數(shù)據(jù)進行篩選,此時用到push()方法。具體代碼如下:

function getPilotUserList() {
laInnerUserService.GetInnerUserList ($scope.searchPara, $scope.page, function (data, success) {
                If (! success) {
                    alert(data);
                    return false;
                }
                for (var i = 0; i < data.List.length; i++) {
                    var j = 0;
                    for (var m = 0; m < data.List[i].U_UserRoles.length; m++) {
                        if (data.List[i].U_UserRoles[m] == role.Tid) {
                            j++;
                        }
                    }
                    if (j > 0) {
                        $scope.list.push (data.List[i]);
                    }
                }
                console.log ($scope. List);
                $scope.page = data.Page;
            });
        }


第五組:周倩宇 ASP.NET中DropDownList下拉框列表控件綁定數(shù)據(jù)的2種方法

1. 把Array數(shù)組綁到DropDownList
string[] Month =new string[7]{ "January", "February", "March", "April", "May", "June", "July" };
this.DropDownList1.DataSource = Month;
this.DropDownList1.DataBind();

這種方法只可以綁定一組數(shù)據(jù)到DropDownList,因為DropDownList可以綁定兩種數(shù)據(jù):1是DataTextField、2是DataValueField,所以第一種方法綁定后DataTextField的值==DataTextField值。

2. 把動態(tài)Array數(shù)組綁定到DropDownList]
ArrayList ar = new ArrayList();
for (int i = 1; i <=12; i++)
{
    ar.Add(i+"月");
}
this.DropDownList2.DataSource = ar;
this.DropDownList2.DataBind();

本質(zhì)上就是將1到12月加到數(shù)組中,如下:

ArrayList ar = new ArrayList();
ar.Add("1月");
ar.Add("2月");
ar.Add("3月");
ar.Add("4月");
...
this.DropDownList2.DataSource = ar;
this.DropDownList2.DataBind();

這種方法的好處是通過ArrayList.Add的方法,可以實現(xiàn)動態(tài)添加元素的功能,比方說,有一個DataTable,我們要把DataTable中一行的數(shù)據(jù)讀出來添加到Arraylist當中。代碼如下:

ArrayList ar = new ArrayList();
DataTable dt=dataset.Tables[0]
foreach (DataRow dr in dt.Rows)
{
    ar.Add(dr[0].ToString());
}

以上代碼從一個DataTable中通過foreach語句循環(huán)讀取Table中一行數(shù)據(jù)中第一個格的值添加到ArrayList當中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。