[Javascript]數字檢查以及轉千分位字串

        function formatCurrency(num) {

            num = num.toString().replace(/\$|\,/g, '');

            if (isNaN(num))

                num = "0";

            sign = (num == (num = Math.abs(num)));

            num = Math.floor(num * 100 + 0.50000000001);

            cents = num % 100;

            num = Math.floor(num / 100).toString();

            if (cents < 10)

                cents = "0" + cents;

            for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)

                num = num.substring(0, num.length - (4 * i + 3)) + ',' +

                    num.substring(num.length - (4 * i + 3));

            return (((sign) ? '' : '-') + num + '.' + cents);

        }         

function IsIntText(textControl) {

            var str = textControl.value;

            var regexp = /^([1-9][0-9]*)$/; //正整數

            //    ^-?\d+$  整數含負數

            var msg = '';

            if (!regexp.test(textControl.value)) {

                msg = '數字格式不正確!';

            }

            if (parseInt(str, 10).toString() == '0') {     //表示輸入的是0或0.00啦

                msg = '數字格式不可為0!';

            }

            if( msg != ''){

                alert(msg);

                textControl.value = "";

            }

            else{

                //檢查都過後重算總金額

                //把數字傳給數值欄位計算總金額

                //把字串欄位變成貨幣單位(千分位帶逗點)

                var fgvD2 = document.getElementById("ctl00_ContentPlaceHolder1_fgvD2");

                var totalAMT = 0; //總金額

                var AlltotalAMT = 0; //總金額

                var ORDERAMT = 0; //單價

                var ORDERNUM = 0 ; //數量

                if (fgvD2.rows.length > 0) {

                    for (var i = 1; i < fgvD2.rows.length; i++) {

                        totalAMT = 0;

                        //字串去除逗號

                        //數量字串欄位

                        ORDERNUM = fgvD2.rows[i].cells[3].getElementsByTagName("input")[0].value;

                        ORDERNUM = ORDERNUM.replace(new RegExp(",", ''),''); //replaceall


                        //單價字串欄位

                        ORDERAMT = fgvD2.rows[i].cells[4].getElementsByTagName("input")[0].value;

                        ORDERAMT = ORDERAMT.replace(new RegExp(",", ''),''); //replaceall


                        //單價傳給數值欄位  在.cs pageload給值

                        //fgvD2.rows[i].cells[4].getElementsByTagName("input")[1].value = ORDERAMT;


                        //總金額 = 總金額 + 數量 * 單價

                        totalAMT = (ORDERNUM * ORDERAMT);

                        AlltotalAMT = AlltotalAMT + (ORDERNUM * ORDERAMT);


                        //總金額傳給數值欄位  在.cs pageload給值

                        //fgvD2.rows[i].cells[5].getElementsByTagName("input")[1].value = totalAMT;


                        //金額字串欄位加上貨幣符號(千分位帶逗點)

                        fgvD2.rows[i].cells[4].getElementsByTagName("input")[0].value = formatCurrency(ORDERAMT).toString();

                        fgvD2.rows[i].cells[5].getElementsByTagName("input")[0].value = formatCurrency(totalAMT).toString();

                        //隱藏td關閉

                        //document.getElementById('tdORDERAMT').style.display = 'none';

                        //document.getElementById('tdTOTALAMT').style.display = 'none';

                    }

                    document.getElementById("ctl00_ContentPlaceHolder1_lbTOTALAMT").innerText = formatCurrency(AlltotalAMT).toString();

                    document.getElementById("ctl00_ContentPlaceHolder1_ftbALLTOTALAMT").value = formatCurrency(AlltotalAMT).toString();

                }

            }

        }


        function IsfloatText(textControl) {

            var str = textControl.value;

            var str = textControl.value;

            var regexp = /^[0-9]+.[0-9]{1,2}?$/; //帶2位小數正實數  發現10A1這種無法找出 下方修補邏輯

            var regexp2 = /^([1-9][0-9]*)$/; //正整數

            var msg = '';

            if (!regexp.test(textControl.value) && !regexp2.test(textControl.value)) { //整數或小數

                msg = '數字格式不正確!';

            }

            var regexp2 = /[A-Za-z]/

            if (regexp2.test(textControl.value)) { //若包含字母

                msg = '數字格式不正確!';

            }

            if (parseFloat(str, 10).toString() == '0') {     //表示輸入的是0或0.00啦

                msg = '數字格式不可為0!';

            }

            if (msg != '') {

                alert(msg);

                textControl.value = "";

            }

            else {

                //檢查都過後重算總金額

                //把數字傳給數值欄位計算總金額

                //把字串欄位變成貨幣單位(千分位帶逗點)

                var fgvD2 = document.getElementById("ctl00_ContentPlaceHolder1_fgvD2");

                var totalAMT = 0; //總金額

                var AlltotalAMT = 0; //總金額

                var ORDERAMT = 0; //單價

                var ORDERNUM = 0; //數量

                if (fgvD2.rows.length > 0) {

                    for (var i = 1; i < fgvD2.rows.length; i++) {

                        totalAMT = 0;

                        //字串去除逗號

                        //數量字串欄位

                        ORDERNUM = fgvD2.rows[i].cells[3].getElementsByTagName("input")[0].value;

                        ORDERNUM = ORDERNUM.replace(/,/, '');


                        //單價字串欄位

                        ORDERAMT = fgvD2.rows[i].cells[4].getElementsByTagName("input")[0].value;

                        ORDERAMT = ORDERAMT.replace(/,/, '');


                        //單價傳給數值欄位  在.cs pageload給值

                        //fgvD2.rows[i].cells[4].getElementsByTagName("input")[1].value = ORDERAMT;


                        //總金額 = 總金額 + 數量 * 單價

                        totalAMT = (ORDERNUM * ORDERAMT);

                        AlltotalAMT = AlltotalAMT + (ORDERNUM * ORDERAMT);


                        //總金額傳給數值欄位  在.cs pageload給值

                        //fgvD2.rows[i].cells[5].getElementsByTagName("input")[1].value = totalAMT;


                        //金額字串欄位加上貨幣符號(千分位帶逗點)

                        fgvD2.rows[i].cells[4].getElementsByTagName("input")[0].value = formatCurrency(ORDERAMT).toString();

                        fgvD2.rows[i].cells[5].getElementsByTagName("input")[0].value = formatCurrency(totalAMT).toString();

                        //隱藏td關閉

                        //document.getElementById('tdORDERAMT').style.display = 'none';

                        //document.getElementById('tdTOTALAMT').style.display = 'none';

                    }

                    document.getElementById("ctl00_ContentPlaceHolder1_lbTOTALAMT").innerText = formatCurrency(AlltotalAMT).toString();

                    document.getElementById("ctl00_ContentPlaceHolder1_ftbALLTOTALAMT").value = formatCurrency(AlltotalAMT).toString();

                }

            }

        }

[C#][Javascript]用Javascript產生"確定"和"取消"的MessageBox,無法using System.Windows.Forms;時使用

ASPX 

 <script type="text/javascript">

    function FORZENToDo() {

            var msg = '將執行預算凍結,凍結後無法修改預算';

                    if (confirm(msg)) {

                        return false;

                    }

                    return true;

        }

    </script>


                    <asp:Button ID="E_btnFORZEN" runat="server" Text="凍結(待審核)" OnClick="E_btnFORZEN_Click"  OnClientClick="if(FORZENToDo()){return false}" Width="15%" />


ASPX.cs


    protected void E_btnFORZEN_Click(object sender, EventArgs e)

    {

         //要執行的動作

    }



[C#]未將物件參考設定為物件的執行個體-個人經驗

 當出現此訊息,標準說明網路很多"物件尚未實體化就呼叫它的屬性或方法"

以下為自己遇到的以及處理方式,作為紀錄

表示有設定的物件,可能是DataTable、Int、String、陣列、object等等,未設定值(沒有值),就直接使用

1.一般的

EX

DataTable dt = null ;

Q_txtBNKNM.Text = dt.Rows[0]["BNKNM"].ToString(); \\這裡就會出錯

這種debug會直接斷在這裡,很好處理

--------------------------------------------------------------------------------

2. 比較難查的,通常是已經包在dll的程式,吐回來的訊息,不會說明斷哪裡

    a. 利用搜尋,查找相關的程式檔案(關鍵字是自己會用到datatable or 陣列等等名稱)

    b. 程式前後文,也有可能造成此問題,前半寫好,後段尚未完成,但只想驗證前面時,也會            發生,會發生在有參數互相傳遞的程式間

 做為紀錄方便自己查詢




[Javascript] telerik:RadGrid get row data

    <script type="text/javascript">

        function TotalAmtD1() {

            var totalAMT = 0;

            var dataItems = $find('<%=gvMulti.ClientID%>').get_masterTableView().get_dataItems();

            for (var i = 0; i < dataItems.length; i++) {

                var AMT = dataItems[i].get_element().cells(2).innerText; //get grid value

                if (AMT == " " || AMT =="NaN") {

                    AMT = dataItems[i].get_cell("AMT").getElementsByTagName("input")[0].value; //if innerText = " " get Textbox value

                }

                if (AMT == " " || AMT == "NaN") {

                    AMT = 0 // All fail get 0

                }

                totalAMT = parseInt(totalAMT) + parseInt(AMT);

            }

            document.getElementById("<%= E_txtTOTALAMT.ClientID %>").value = totalAMT;

        }

    </script>

 <ILS:ILSRadGrid ID="gvMulti" runat="server" AllowPaging="True" AllowSorting="True"

            AutoGenerateColumns="False" GridLines="None" Skin="Office2007" DataMember="dtMain"

            Height="400px" PageSize="200" ShowFooter="false" Width="98%" OnItemDataBound="gvMulti_itemDataBound" a

            CellSpacing="0" AlwaysShowEditMode="False" DelChekBoxID="M_chkDEL" DelImageBtnID="M_imgDEL">

            <ILSCommandItemSettings ShowAddNewRecordButton="true" />

            <ILSColumnSettings AutoGenerateRowIndexColumn="true" AutoGenerateDelColumn="false" />

            <%--客戶端設定--%>

            <%--分頁設定--%>

            <FilterMenu EnableImageSprites="False">

            </FilterMenu>

            <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default">

            </HeaderContextMenu>

            <ClientSettings AllowColumnsReorder="false" ReorderColumnsOnClient="false">

                <KeyboardNavigationSettings AllowSubmitOnEnter="false" />

                <Selecting AllowRowSelect="True"></Selecting>

                <ClientEvents OnRowClick="GridRowClick" />

                <%--OnRowDblClick="GridRowClick"--%>

                <Scrolling AllowScroll="true" SaveScrollPosition="true" UseStaticHeaders="true" ScrollHeight="80px" />

            </ClientSettings>

            <MasterTableView CommandItemDisplay="None" EditMode="InPlace" DataMember="dtMain"

                TableLayout="Fixed" RetrieveNullAsDBNull="false" Width="100%">

                <EditFormSettings>

                    <EditColumn FilterControlAltText="Filter EditCommandColumn column">

                    </EditColumn>

                </EditFormSettings>

                <CommandItemSettings ExportToPdfText="Export to Pdf"></CommandItemSettings>

                <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">

                </RowIndicatorColumn>

                <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column">

                </ExpandCollapseColumn>

                <Columns>

                    <telerik:GridTemplateColumn HeaderText="月份" UniqueName="DATAMONTH"

                        ItemStyle-Wrap="false" SortExpression="MONTH">

                        <ItemTemplate>

                            <%#DataBinder.Eval(Container.DataItem, "DATAMONTH").ToString().Trim() == string.Empty ?

                           "&nbsp;" : DataBinder.Eval(Container.DataItem, "DATAMONTH").ToString().Trim()%>

                        </ItemTemplate>

                        <HeaderStyle Width="70px" HorizontalAlign="Center" />

                        <ItemStyle Width="70px" HorizontalAlign="Center" />

                    </telerik:GridTemplateColumn>

                    <telerik:GridTemplateColumn HeaderText="<font color='red'>*</font>預算金額" UniqueName="AMT"

                        ItemStyle-Wrap="false" SortExpression="AMT">

                        <EditItemTemplate>

                            <ILS:ILSTextBox runat="server" ID="M_intAMT" Title="預算金額" ColumnName="AMT" 

                                MaxLength="12" ValidationGroup="vgSave" Text='<%# Bind("AMT") %>'  onchange="return TotalAmtD1();"

                                Width="98%" ValidType="Number" Style="text-align: right">

                            </ILS:ILSTextBox>

                        </EditItemTemplate>

                        <ItemTemplate>

                            <%#DataBinder.Eval(Container.DataItem, "AMT").ToString().Trim() == string.Empty ?

                           "&nbsp;" : DataBinder.Eval(Container.DataItem, "AMT").ToString().Trim()%>

                        </ItemTemplate>

                        <HeaderStyle Width="70px" HorizontalAlign="Center" />

                        <ItemStyle Width="70px" HorizontalAlign="Center" />

                    </telerik:GridTemplateColumn>

[DataSet Bug]無法啟用條件約束。一或多個資料列的值違反非 Null、唯一或外部索引鍵條件約束

在使用TableAdapter作Query時發生 1. 原因為有些資料欄位Query出來後為null值 但是該欄位在dbDataSet的屬性AllowDBNull為False 因此把該欄位(或乾脆把全部欄位屬性AllowDBNull改為True 2. maxLength 檢...