ASP.NET-FineUI開發實踐-8

來源:互聯網
上載者:User

標籤:blog   http   io   os   ar   java   for   sp   div   

  上回類比的是下拉grid,這回我把下拉grid和表格自動不全放一起了,實在是好做,但是也有很多要注意的,現在分享下,大家學習。

接上回 傳送門

 1. 有個tbxMyBox1_TriggerClick方法直接重寫了,目的是顯示下拉的列表,直接上代碼注意看注釋,grid ID是grid2
     function tbxMyBox1_TriggerClick() {            //先隱藏            F(‘<% =Grid2.ClientID%>‘).hide();            //位置設定樣式            $(‘#Grid2_wrapper‘).css(‘top‘, $("#<% =TriggerBox1.ClientID %>-triggerWrap").offset().top + $("#<% =TriggerBox1.ClientID %>-triggerWrap").height());            $(‘#Grid2_wrapper‘).css(‘left‘, $("#<% =TriggerBox1.ClientID %>-triggerWrap").offset().left);            $(‘#Grid2_wrapper‘).css(‘position‘, ‘fixed‘);            $(‘#Grid2_wrapper‘).css(‘z-index‘, ‘9999‘);            //顯示方法            F(‘<% =Grid2.ClientID%>‘).show(F(‘<% =TriggerBox1.ClientID %>‘).getEl(), function () {            });        }

  

下面問題來了:學習...不是這個  grid 顯示出來老在那獃著,找了半天才找見解決方案,點擊grid2以外自動隱藏grid2,加上這句 
                //頁面的點擊事件                $(document).click(function (e) {                    var target = $(e.target);                    //判斷是否點擊的位置,是gird和當前編輯的TriggerBox1就不變,點擊其他位置就隱藏grid                    //closest是一層層找上層元素,找不到返回0,可以在網上看看例子                    //第二個判斷是grid是否隱藏,顯示的再觸發隱藏                    if (target.closest("#<% =Grid2.ClientID%>").length == 0 && !F(‘<% =Grid2.ClientID%>‘).isHidden() && target.closest("#<% =TriggerBox1.ClientID%>").length == 0) {                        showhide();                    }                });

  加到show方法裡,在grid2show出來之後觸發。全:

 function tbxMyBox1_TriggerClick(t) {            //先隱藏            F(‘<% =Grid2.ClientID%>‘).hide();            //位置設定樣式            $(‘#Grid2_wrapper‘).css(‘top‘, $("#<% =TriggerBox1.ClientID %>-triggerWrap").offset().top + $("#<% =TriggerBox1.ClientID %>-triggerWrap").height());            $(‘#Grid2_wrapper‘).css(‘left‘, $("#<% =TriggerBox1.ClientID %>-triggerWrap").offset().left);            $(‘#Grid2_wrapper‘).css(‘position‘, ‘fixed‘);            $(‘#Grid2_wrapper‘).css(‘z-index‘, ‘9999‘);            //顯示方法            F(‘<% =Grid2.ClientID%>‘).show(F(‘<% =TriggerBox1.ClientID %>‘).getEl(), function () {                //頁面的點擊事件                $(document).click(function (e) {                    var target = $(e.target);                    //判斷是否點擊的位置,是gird和當前編輯的TriggerBox1就不變,點擊其他位置就隱藏grid                    //closest是一層層找上層元素,找不到返回0,可以在網上看看例子                    //第二個判斷是grid是否隱藏,顯示的再觸發隱藏                    if (target.closest("#<% =Grid2.ClientID%>").length == 0 && !F(‘<% =Grid2.ClientID%>‘).isHidden() && target.closest("#<% =TriggerBox1.ClientID%>").length == 0) {                        showhide();                    }                });            });        }

  

 showhide();以前寫了,就不寫了。顯示出來了。2. 問題又來了,當點擊grid1外的位置編輯列還原了,就是又變為正常狀態,輸入框沒了,好像是以前寫過startEditByPosition是編輯方法,在ext-part2.js裡找到的,有圖為證 字面意思就是開始編輯的位置,參數是行號和列號。這個方法的用處就是點擊gird2時參數grid1的beforeedit事件
        F.ready(function () {            //浮動grid2能跑加上就不跑了            F(‘<% =Grid2.ClientID%>‘).draggable = false;            //編輯之前的事件            F(‘<% = Grid1.ClientID %>‘).on(‘beforeedit‘, function (editor, e) {                //列名                if (e.field == ‘Name‘) {                    //列號                    window._selectrowIndex = e.rowIdx;                    window._selectcellIndex = e.colIdx;                }                return true;            });        });

 當項目點擊事件裡隨時改變編輯位置,這個事件也是斟酌過的,其他的事件有重新整理,一眼就看出來了,這個事件看不見重新整理。

 

            //項點擊事件            F(‘<%= Grid2.ClientID %>‘).on(‘itemmousedown‘, function (View, record, item, index, e) {                F(‘<% =Grid1.ClientID%>‘).f_cellEditing.cancelEdit();                F(‘<% =Grid1.ClientID%>‘).f_cellEditing.startEditByPosition({                    row: _selectrowIndex, column: _selectcellIndex                });            });

  3. 就差點擊事件了,我用了表格的雙擊事件,前台js觸發,可能是用慣了

            F(‘<% =Grid2.ClientID%>‘).on(‘itemdblclick‘, function (grid, record, item, index) {                F.customEvent(‘Grid2_click_‘ + index);                F(‘<% =Grid2.ClientID%>‘).hide();            });

  後台:

protected void PageManager1_CustomEvent(object sender, CustomEventArgs e)        {            if (e.EventArgument.IndexOf("Grid2_click_") >= 0)            {                int index = Convert.ToInt32(e.EventArgument.Split(‘_‘)[2].ToString());                string name = Grid2.Rows[index].Values[Grid2.FindColumn("Name").ColumnIndex].ToString();                DataTable table = GetDataTable();                foreach (DataRow row in table.Rows)                {                    if (row["Name"].ToString() == name)                    {                        string deleteScript = Grid1.GetDeleteIndexReference();                        //string deleteScript = "";                        JObject defaultObj = new JObject();                        defaultObj.Add("Name", row["Name"].ToString());                        defaultObj.Add("Gender", row["Gender"].ToString());                        defaultObj.Add("EntranceYear", row["EntranceYear"].ToString());                        defaultObj.Add("EntranceDate", row["EntranceDate"].ToString());                        defaultObj.Add("AtSchool", (bool)row["AtSchool"]);                        defaultObj.Add("Major", row["Major"].ToString());                        PageContext.RegisterStartupScript(                            deleteScript //刪除當前行                            + Grid1.GetAddNewRecordReferenceByindex(defaultObj) //新增定義的行                            + "");//把表單管理                    }                }            }        }

  

ASP.NET-FineUI開發實踐-8

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.