1. 程式人生 > >前端後臺資料操作經驗記錄一

前端後臺資料操作經驗記錄一

 場景: 臨近離職的一段時間接觸到一個小功能,如下圖所示新增一個複選框checkbox,當勾上時,將明細裡面的訂單號寫到開票備註裡面去。並且訂單號不要重複,重複就沒有意義了。

那麼問題就來了:我是要前端插入還是後端資料庫插入,一想到不要重複,當然sql操作方便啊,於是就有了下面的嘗試

嘗試一:資料庫寫sql語句插入

UPDATE HtTax_KaiPiaoBills3  SET KpRemarks = (SELECT DISTINCT NumAtCard+','  FROM dbo.HtTax_KaiPiaoDetail3  
WHERE KaiPiaoBills_FK='"+oid+"' FOR XML PATH('')) WHERE HtTax_KaiPiaoBills3OID='"+oid+"'"

但是插入後發現數據是插進資料庫去了,但是頁面上仍然需要重新整理才會顯示出來,重新整理頁面是個很麻煩的事,首先頁面元素夠多,為了一小點兒地方整體重新整理總感覺有點得不償失,想起來ajax技術,區域性重新整理,於是就有了下面的嘗試。

嘗試二:1.前端操作,將明細中頁面上的資料取出來存到一個數組。

                2.將陣列中重複的訂單號去掉存入另一陣列

                3.將陣列中的資料存入到變數

                4.將變數賦值給頁面上備註控制元件。

function FillRemark()
{
	if ($("#IswoffexcEdit").get(0).checked)
	{
	    var oldIndex=BC_KaiPiaoDetailBase.recordIndex;
	    var NumAtCard=" ";
        for(var i=0; i< BC_KaiPiaoDetailBase.getRecordCount(); i++)
        {
            
            BC_KaiPiaoDetailBase.SetIndexNoEvent(i);
            var fsno=BC_KaiPiaoDetailBase.getFieldValue("NumAtCard");
            NumAtCard=fsno+","+NumAtCard;
        }
        BC_KaiPiaoDetailBase.SetIndexNoEvent(oldIndex);
        var array=new Array();
        array=NumAtCard.split(",");
        var newArr = [];
        for(var i =0;i<array.length-1;i++)
        {
          if(newArr.indexOf(array[i]) == -1)
            {
                newArr.push(array[i]);
            }
        }
        var NumAtCard1=newArr.join(",");
        BC_KaiPiaoBillsBase.setFieldValue("KpRemarks",NumAtCard1);
	}
	else
	{
	    BC_KaiPiaoBillsBase.setFieldValue("KpRemarks"," ");
	}
	
}
然後提交的時候備註就存入了資料庫;

兩者操作的不同:前者是先在資料庫插入資料,後再頁面顯示;後者是現在前端賦值給控制元件,然後把控制元件的值存入資料庫。

知識碎片:

1.SQL函式:

FOR XML PATH('')    此處為了和並列。
2.js陣列資料去重:

思路:新建一個數組,然後迴圈檢查該新建陣列中是否有原陣列中的資料,不存在就存入(push).