[jQuery]新增或刪除table列

  • 4532
  • 0

摘要:[jQuery]新增或刪除table列

 //單純的新增一列到table
        function AddRow(ym) {
            //如果沒有加上first, 雖然clone仍然會成功, 但是在after的時候,就會把新的row塞在197,160.50那個td
            //畫面就會跑掉
            var srcrow = $("table[id*=gvShowData1] tr:contains('197,160.50'):first");
            var newrow = srcrow.clone();
            srcrow.after(newrow);
            return false;
        }

        //單純的從table刪除一列
        function DelRow() {
            var srcrow = $("table[id*=gvShowData1] tr:contains('197,160.50'):first").remove();
            return false;
        }
       
        //Grid裡面動態顯示區域的詳細資料,例如:
        //北區:台北市,桃園市,中區:台中市、苗栗市
        //acct_month:年月,dc_no:代扣廠商代碼,DC_NAME:代扣廠商名稱
        // PMA_NAME:名稱,PDS_TYPE_NAME:罰款類型
        function AddDelRow(acct_month, dc_no,DC_NAME, PMA_NAME, PDS_TYPE_NAME,ID) {
            //根據pk, 用jQuery抓出此列 tr            
            var srcrow = $("table[id*=gvShowData] tr:contains('" + acct_month +
            "'):contains('" + dc_no + "'):contains('" + PMA_NAME + "'):contains('" + PDS_TYPE_NAME + "'):first");
            //alert(acct_month + ',' + dc_no + ',' + PMA_NAME + ',' + PDS_TYPE_NAME);

            if ($("#" + ID).attr("value") == "+") {
                //alert('現在是加號');
                //ajax回後端取得區域詳細資料(JSon格式)          
                var promise = AjaxGetDistrict();
                var distAmtJSonString = ""; //後端取得的json結果
                var distAmtJSonObject; //把JSon物件化
                var space = ' ';
                promise.done(function (result) {
                    distAmtJSonObject = jQuery.parseJSON(result.d);
                    //用迴圈的方式逐筆印出
                    for (var i = 0; i < distAmtJSonObject.length; i++) {
                        var newrow = srcrow.clone(); //從來源row複製整個內容                 
                        newrow.find("td").each(function () {
                            //$(this).empty();
                            var tdContent = $(this).html();
                            //如果此td是代扣廠商代碼的話,就換掉內容
                            if (tdContent.indexOf(dc_no) >= 0) {
                                $(this).html(''); //清空內容,換成我們要的
                                $(this).html(space + space + space + distAmtJSonObject[i].Area);
                            }
                            else if(tdContent.indexOf(DC_NAME) >= 0 ){
                                $(this).html(''); //清空內容,換成我們要的
                                $(this).html(space + space + space + distAmtJSonObject[i].Amt + "萬");
                            }   
                            else {
                                //如果是其他的欄位,就清空
                                $(this).html('');
                            }
                        });
                        //然後加入grid裡面
                        srcrow.after(newrow);
                    }
                    $("#" + ID).attr("value", "-");
                });
            }
            else {
                //alert('現在是減號');
                //下一個tr的第一個td如果是空的,就刪除下一個tr
                while (srcrow.next().find("td:first").html() == "") {
                    srcrow.next().remove();
                }
                $("#" + ID).attr("value", "+");
            }            
            return false;          
        }

        //Ajax的方式去資料庫取得區域的詳細資料,例如
        //北區:台北市,桃園市,中區:台中市、苗栗市
        function AjaxGetDistrict() {
            return $.ajax({
                type: "post",
                url: "PDS12.aspx/AjaxGetDistrict",
                //不用傳參數的話,放個大括弧就好
                //data: "{}",
                data: '{districtName: "' + '北區' + '" }',
                contentType: "application/json; charset=utf-8",
                dataType: "json"
            });
        }

 

code_behind:

btnTest.Attributes.Add("onclick", "return AddDelRow('" + acct_month + "','" + dc_no + "','" + DC_NAME +
                        "','" + PMA_NAME + "','" + PDS_TYPE_NAME + "','" + btnTest.ClientID + "')");