中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇

發布時間:2020-07-01 18:32:05 來源:網絡 閱讀:348 作者:spy95599 欄目:編程語言

一、女神也愛玩擼碼

“在么,親。”

“在!在!有,有事么”(我真睡醒了么!垂涎了好久的女神呀!高中同學,高一向她表白,"我想找個170以上的",高二等我長到170了“我想找個175的”,高三下血本買了雙內增高“我喜歡178以上的,有安全感”)

三分鐘后....

"沒事也可找我的."擦,我TM怎么這么不爭氣,不是發過誓等她主動跟我講話的時候就送她一個字:滾!

"有個網頁不會做,你可不可以幫人家弄一下呀."

"弄,一定給你弄得妥妥的."

"壞死了,需求我離線發給你了,這個就靠你了啊."

"恩,靠我,靠我就對了"

QQ頭像又黑掉了...

需求還好嘛.就是寫一個采購單的錄入界面而已.

二十分鐘后收工,離線發送。

"親,你好快呀,我先看看有沒有問題哈,有問題還要麻煩你哦"


二、重濕AV之旅(此AV非彼AV詳情請見上一篇博客《大濕教我寫程序(2)之走向AV之路》)

"親,還有兩個小問題耶,采購單錄入界面的表頭上的供應商要可以自動補全,自動補全用戶體驗會好很多,客戶會感覺很人性化。那個東東我把要求用標出來的你看看哈,可能有點難哦。"

"這東西對我來說就不叫個事兒,包在我身上."

大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇

這東西以前好像用過,自動補全的,ajaxcontroltoolkit,里面有CascadingDropDown控件.

引用一下ajaxcontroltoolkit,拉一個CascadingDropDown出來,關聯一下文本框.然后寫一個webservice,里面提供一個方法給它調用。OK,解決了。

看一下好像不對,女神要求的下拉框里有兩列,一列是編碼,一列是名稱。這個只能顯示一列。達不到要求呀,查了一遍屬性沒辦法。

“大雄”

“大濕”

“死了啊”

“網速有點慢,我把快播的端口號限一下啊。”

“搞什么呀,又有什么問題了,我這剛準備陶冶一下情操你就。。。”

“恩,需求你看下,這個下拉框怎么搞。”

“教學視頻看了這么多AV技術還是沒學到家呀,典型的AV技術應用嘛。”

"AV技術我知道呀,用ajax去visit后臺數據我知道怎么去抓。關鍵是怎么在前臺展現呢?"

“蒼老師用外語教的每一句話你都記得那么清楚,我上周剛教你的動態加載菜單(詳情請見《大濕教我寫.net通用權限框架(1)之菜單導航篇》)不就是講的怎么動態構造html么?

前端說穿了其實很簡單,不管多絢麗的界面都還是由那些最基本的html元素拼起來的。”

“好啦,講半天還是得自己寫,滾吧滾吧”

經他這么一說其實我心里也已經有了大致思路。

1、從后臺把數據抓取出來

根據前臺傳過來的條件返回10條記錄供界面顯示

大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇
///<summary>/// 自動補全(顯示10行)        ///</summary>///<param name="where">條件</param>///<param name="param">參數化</param>///<returns></returns>public DataTable autocomplete(StringBuilder where, SqlParam[] param)        {            StringBuilder strSql = new StringBuilder();            strSql.Append("SELECT TOP 10 Supplier_ID,Code,ShortName,ValueAddRate FROM Base_Supplier WHERE 1=1");            strSql.Append("AND DeleteMark =0 AND IsVisible = 0");            strSql.Append(where);            strSql.Append(" ORDER BY CreateDate");            return DataFactory.SqlDataBase().GetDataTableBySQL(strSql, param);        }
大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇

2、動態拼接要顯示的內容

確實像大濕所有的那樣,這個下拉自動填充框確實是由表格和字符組成。

在上一篇博文里已經講了ajax如何調用后臺方法,這里就不再重復。

抓取到供應商數據后進行一次遍歷循環地拼接<tr>

                                                                                 <td>內容</td>

                                                                                  ..............

                                                                                </tr>

拼接好了以后就放入到div中根據Supplier_Name這個控件的位置加載出來。

然后選定了內容的時候再將選中的內容寫入Supplier_Name控件中

Supplier_Name失去焦點時隱藏掉div.

大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇
//供應商自動補全function SupplierAutocomplete() {    $("#Supplier_Name").bind("keyup", function (e) {        if (e.which != 13 && e.which != 40 && e.which != 38) {            var parm = "action=autocomplete&search=" + escape($(this).val());            Load_Supplier(parm);        }    }).focus(function () {        var parm = "action=autocomplete&search=" + escape($(this).val());        Load_Supplier(parm);        $(this).select();    });    function Load_Supplier(parm) {        getAjax('../../WMSBase/SysSupplier/Supplier_List.aspx', parm, function (data) {            var json = eval("(" + data + ")");            var html = "";            for (var i = 0; i < json.JSON.length; i++) {                var list = json.JSON[i];                html += "<tr>";                html += '<td >' + list.SUPPLIER_ID + '</td>';                html += '<td >' + list.CODE + '</td>';                html += '<td >' + list.SHORTNAME + '</td>';                html += '<td >' + list.VALUEADDRATE + '</td>';                html += "</tr>";            }            //點擊事件回調
            autocomplete("Supplier_Name", "300px", "300px", html, function (r) {                var array = new Array();                array = r.split('≌');                $("#Supplier_ID").val(array[0]);                $("#Supplier_Name").val(array[2]);                VALUEADDRATE = array[3];            });        });    }    //上,下鍵盤回調
    autocompletekeydown("Supplier_Name", function (r) {        var array = new Array();        array = r.split('≌');        $("#Supplier_ID").val(array[0]);        $("#Supplier_Name").val(array[2]);        VALUEADDRATE = array[3];    });}
大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇
大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇
//自動補全表格var IndetableRow_autocomplete = 0;var scrollTopheight = 0;function autocomplete(Objkey, width, height, data, callBack) {    if ($('#' + Objkey).attr('readonly') == 'readonly') {        returnfalse;    }    if ($('#' + Objkey).attr('disabled') == 'disabled') {        returnfalse;    }    IndetableRow_autocomplete = 0;    scrollTopheight = 0;    var X = $("#" + Objkey).offset().top;    var Y = $("#" + Objkey).offset().left;    $("#div_gridshow").html("");    if ($("#div_gridshow").attr("id") == undefined) {        $('body').append('<div id="div_gridshow" ></div>');    } else {        $("#div_gridshow").height(height);        $("#div_gridshow").width(width);    }    var sbhtml = '<table class="tableobj">';    if (data != "") {        sbhtml += '<tbody>' + data + '</tbody>';    } else {        sbhtml += '<tbody><tr><td >沒有找到您要的相關數據!</td></tr></tbody>';    }    sbhtml += '</table>';    $("#div_gridshow").html(sbhtml);    $("#div_gridshow").css("left", Y).css("top", X + 23).show();    if (data != "") {        $("#div_gridshow").find('tbody tr').each(function (r) {            if (r == 0) {                $(this).addClass('selected');            }        });    }    $("#div_gridshow").find('tbody tr').click(function () {        var value = "";        $(this).find('td').each(function (i) {            value += $(this).text() + "≌";        });        if ($('#' + Objkey).attr('readonly') == 'readonly') {            returnfalse;        }        if ($('#' + Objkey).attr('disabled') == 'disabled') {            returnfalse;        }        callBack(value);        $("#div_gridshow").hide();    });    $("#div_gridshow").find('tbody tr').hover(function () {        $(this).addClass("selected");    }, function () {        $(this).removeClass("selected");    });    //任意鍵關閉
    document.onclick = function (e) {        var e = e ? e : window.event;        var tar = e.srcElement || e.target;        if (tar.id != 'div_gridshow') {            if ($(tar).attr("id") == 'div_gridshow' || $(tar).attr("id") == Objkey) {                $("#div_gridshow").show();            } else {                $("#div_gridshow").hide();            }        }    }}
大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇

寫完了我都不敢相信,我現在竟然能寫出這么一大段JS代碼了,這就是女神的力量呀。

那妹子太粗心,供應商需要自動補全,采購員也需要自動補全的,那就一并寫了吧.
這里以JS代碼的形式實現功能有助于大家理解原理,其實這類公用的代碼完全可以封裝成控件,就不用看這一大砣惡心的東西了。

運行一下看。。。

沒道理呀還是沒有自動補全。

“大雄,顯示不出來呀!”

“我擦,函數都寫好了,你沒有去調用它,怎么會顯示。就像你泡妹子一樣,有了邪惡的念頭和方法,但是對具體的對象去使用。肯定不會有什么收獲。那是YY”

好吧,我再改

大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇
//初始化$(function () {    divresize_From(50);    SupplierAutocomplete();    SalesmanAutocomplete();})
大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇

再次運行

大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇

搞定,編號和名稱都可以帶出來

再次發送過去.

“大雄,我越寫js就越發現js跟C#其實很像,我們這里的初始化不就相當于C#里的Page_Load么,一進入頁面先執行這里面的東西。”
“是的,寫到后面你會發現幾乎所有的語言都是相通的。就像所有的女人都一樣,都可以暖背窩、生娃、搜你私房錢。”


三、屌絲沒有春天

"親,忘了跟你講,下面表格里的物料名稱也要下拉填充。"

“這人,話都不會一次講清楚,VS都關了,這不耍我么?”

“2B了吧,這明顯調戲你嘛,太不上道了。”

“也是啊,雖然窮點,但是我長得帥呀,雖然帥不能拿去ATM機當卡刷,看著也舒服呀,專治各種內分泌失調、各類婦科疑難雜癥。有眼光。”

“擦,你還當真。”

“不跟你說了,我要用心為女神服務。”

原理都一樣,抓取不同的數據而已。5分鐘后搞定。

再順手幫她把導航頁也改一下風格,服務就要做全套嘛,誰讓我是服務系的。

大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇

大濕教我寫程序(3)之自動補全(屌絲沒有春天)篇

“親,全部弄好了,你看看都可以不。”

三分鐘后...

“簡直屌爆天了,要的就是這效果,我老婆洗澡去了,我替她謝過你了,兄弟!”

擦!誰TM說屌絲也有春天。。。硬盤中的女神才是屌絲的春天。

謹以此文獻給像我一樣的菜鳥。

附demo地址:

http://223.86.105.239:803



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

余庆县| 淳化县| 新闻| 望城县| 泰顺县| 浦东新区| 大港区| 交城县| 陇西县| 沂水县| 伊吾县| 玉山县| 宁强县| 上犹县| 岳阳市| 曲松县| 峡江县| 武陟县| 泌阳县| 大姚县| 防城港市| 安宁市| 金沙县| 舟曲县| 芦山县| 儋州市| 咸丰县| 长岛县| 临城县| 忻城县| 遂昌县| 山阳县| 全州县| 河间市| 丹寨县| 舒兰市| 息烽县| 泰来县| 东方市| 瓦房店市| 涟源市|