[C#]下拉選單改變 TR style 的 display 狀態,並在pageload後保存

CS  //此寫法是笨方法,直接在pageload再判斷一次
#region javascript改變display值需要pageload時再做一次,值會loaddefault
        ScriptManager.RegisterStartupScript(Page, GetType(), "displaytr", "<script>displaytr()</script>", false);
        #endregion


ASPX
<script type="text/javascript">
        function displaytr() {
            var displayvalue = document.getElementById('ctl00_ContentPlaceHolder1_fddlFORM').value; //下拉選單的值
            var tr01 = document.getElementById('tr01');
            var tr02 = document.getElementById('tr02');
            var tr03 = document.getElementById('tr03');

            if (displayvalue == 'Y') {
                tr01.style.display = '';
                tr02.style.display = '';
                tr03.style.display = '';
            }
            else {
                tr01.style.display = 'none';
                tr02.style.display = 'none';
                tr03.style.display = 'none';
            }         
        }
    </script>

<td id="tdFORM2" rowspan="1">
                            <iFlow:FDataDropDownList ID="fddlFORM" runat="server" Title="" Width="95%" ColumnName="MERGEFLAG" onchange="displaytr()">
                                <asp:ListItem Value="Y">是</asp:ListItem>
                                <asp:ListItem Value="N" Selected="True">否</asp:ListItem>
                            </iFlow:FDataDropDownList>
                        </td>


<tr id="tr01" style="display:none;">
                        <td colspan="6">
                            <asp:Label ID="Label30" runat="server" Text="採購建議廠商(請從下方表列勾選)" Width="99%" Font-Bold="True"
                                BackColor="#FFFF99"></asp:Label>
                        </td>
                    </tr>
                    <tr id="tr02" style="display:none;">
                        <td align="right">
                            建議廠商
                        </td>
                        <td align="center">
                            <iFlow:FDataTextBox ID="ftbVENDORNO" runat="server" Width="7%" ColumnName="VENDORNO"
                                Title="建議廠商序號" Font-Size="Medium" BackColor="Gainsboro" isRequired="true"></iFlow:FDataTextBox>
                            <iFlow:FDataTextBox ID="ftbVENDORNM" runat="server" Width="75%" ColumnName="VENDORNM"
                                Title="建議廠商名稱" Font-Size="Medium" BackColor="Gainsboro"></iFlow:FDataTextBox>
                        </td>
                        <td align="right">
                            建議總價
                        </td>
                        <td align="center">
                            <iFlow:FDataTextBox ID="ftbVENDORAMT" runat="server" Width="95%" ColumnName="VENDORAMT"
                                Title="建議廠商總價" Font-Size="Medium" BackColor="Gainsboro"></iFlow:FDataTextBox>
                        </td>
                        <td align="right">
                            付款方式
                        </td>
                        <td align="center">
                            <iFlow:FDataTextBox ID="ftbVENDORPAYMODE" runat="server" Width="95%" ColumnName="VENDORPAYMODE"
                                Title="付款方式" Font-Size="Medium" BackColor="Gainsboro"></iFlow:FDataTextBox>
                        </td>
                    </tr>
                    <tr id="tr03" style="display:none;">
                        <td align="right">
                            預定付款日
                        </td>
                        <td align="center">
                            <iFlow:FDataTextBox ID="ftbVENDORPAYDATE" runat="server" ColumnName="VENDORPAYDATE"
                                Title="預定付款日" Width="87%" Font-Size="Medium" BackColor="Gainsboro"></iFlow:FDataTextBox>
                        </td>
                    </tr>

[JavaScript]檢查gridview textbox 只能輸入發票2位英文大寫+8位數字

 <script type="text/javascript">
        ////檢查gridview textbox 只能輸入發票2位英文大寫+8位數字
        function isINVNO(textControl)
        {
            var str = textControl.value;
            if (str.length = 10)
            {
                var regexp = /^[a-zA-Z]{2}[0-9]{8}$/;
                  if (!regexp.test(textControl.value))
                  {
                      alert("發票格式不正確!");
                      textControl.value = "";
                  }
            }
            else
            {
                alert("發票格式不正確!");
                textControl.value = "";
            }
        }
     
    </script>

                            <iFlow:FDataTextBox ID="ftbCHECKINVNO" runat="server" ColumnName="CHECKINVNO" Title="發票號碼" Width="85%"   onchange="isINVNO(this);">

[JavaScript]gridview 總合傳給頁面控制項

    <script type="text/javascript">
        //gridview 總合傳給控制相
        function getTotal(textControl) {
            var tbl = document.getElementById("ctl00_ContentPlaceHolder1_fgvD80");
            var totalpassNum =0  ;
            var totalamtNum =0 ;

            totalpassNum = parseInt(totalpassNum)

            //i從1開始,因為title不用找
            for (i = 1; i < tbl.rows.length; i++) {
                //取得cell裡面第一個TextBox

                if (Number(tbl.rows[i].cells[8].getElementsByTagName("input")[0].value))
                {
                    totalpassNum = totalpassNum + parseInt(tbl.rows[i].cells[8].getElementsByTagName("input")[0].value);
                }
                //if (Number(tbl.rows[i].cells[9].getElementsByTagName("input")[0].value)) {
                //    totalpassNum = totalpassNum + tbl.rows[i].cells[9].getElementsByTagName("input")[0].value;
                //}
            }
            //傳給頁面控制項
            document.getElementById("ctl00_ContentPlaceHolder1_ftbCHECKNUM").value = totalpassNum;
            //document.getElementById("ctl00_ContentPlaceHolder1_ftbCHECKAMT").value = totalamtNum;
        }
   </script>

 <asp:TemplateField HeaderText="合格數量">
                    <ItemTemplate>
                        <asp:TextBox ID="tbCHECKNUM_D80" runat="server" Text='<%# Eval("CHECKNUM") %>' Width="95%"  onkeypress="return IsIntText();" onchange="getTotal(this);" ></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>

檢查gridview textbox 只能輸入數字+倒退鍵

    <script type="text/javascript">
        //檢查gridview textbox 只能輸入數字+倒退鍵
        function IsIntText() {
            var charkeycode = window.event.keyCode;
            if (charkeycode > 47 && charkeycode < 58 || charkeycode == 8) {
                return true;
            }
            return false;
        }
</script>


                <asp:TemplateField HeaderText="產品數量">
                    <ItemTemplate>
                        <asp:TextBox ID="tbPRODUCTNUM_D80" runat="server" Text='<%# Eval("PRODUCTNUM") %>' Width="95%"  onkeypress="return IsIntText();"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>

[C#-dataset]型別 ''DBNull'' 轉換為型別 ''String'' 是無效的

1. 檢查是否有該給的欄位沒有傳給DB,透過DataSet要確認為最新修改

2. 檢查傳給DatasSet的欄位,是否為null

3. 依照寫法,檢查從aspx gridview裡是否缺少欄位,卻在dataset有設定

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

在使用TableAdapter作Query時發生


1.原因為有些資料欄位Query出來後為null值但是該欄位在dbDataSet的屬性AllowDBNull為False因此把該欄位(或乾脆把全部欄位屬性AllowDBNull改為True

2. maxLength 檢查
直接把MaxLength設成-1,表示無限大

3.使用 DataSet 開發時,請注意該 Table 的 主鍵值,是否為組合鍵。
如為組合鍵,在查詢語句中必須要將主鍵值加在 Select 語句中。

4. 檢查對應table欄位,長度是否變更,EX:5=>10

[Javascript]Gridviewe + checkbox 勾選後將值傳給其他控制項

實在查很久,自己記錄下來

JS端
<script type="text/javascript">
        var ClickNum = 0;//記錄同一checkbox連續點擊次數
        var PreCheckboxID = "";//記錄點擊checkbox的ID
        //listId控制checkbox的範圍
        //SelectRadio是點擊checkbox自己
        function SelectedSingle(listId, SelectRadio) {
            ///判斷是否點同一個checkbox
            if (PreCheckboxID == SelectRadio.id) {
                ClickNumClickNum = ClickNum + 1;
            }
            else {
                PreCheckboxID = SelectRadio.id;
                ClickNum = 0;
            }
            //找到範圍
            var GridViewtableSearchList = document.getElementById(listId);
            //找到控制範圍下所有input
            var objs = GridViewtableSearchList.getElementsByTagName("input");
            var gv = document.getElementById("ctl00_ContentPlaceHolder1_fgvD1");

            //勾選的將fgvD1值傳給主表單IFFGAA40F
            //找到控制範圍下所有checkbox都改成为false
            for (var i = 0; i < objs.length; i++) {
                if (objs[i].type.toLowerCase() == "checkbox")
                {
                    objs[i].checked = false;
                }
            }
            var SelectRadioID = SelectRadio.id;
            if (ClickNum % 2 != 1) {
                document.getElementById(SelectRadioID).checked = true;
            }
            else {
                document.getElementById(SelectRadioID).checked = false;
            }

            for (var i = 0; i < objs.length; i++) {
                if (objs[i].type.toLowerCase() == "checkbox" && objs[i].checked == true)
                {
               
                        document.getElementById("ctl00_ContentPlaceHolder1_ftbVENDORNO").value = gv.rows[i].cells[1].innerHTML;
                        document.getElementById("ctl00_ContentPlaceHolder1_ftbVENDORNM").value = gv.rows[i].cells[4].innerHTML;
                        document.getElementById("ctl00_ContentPlaceHolder1_ftbVENDORAMT").value = gv.rows[i].cells[5].innerHTML;
                        document.getElementById("ctl00_ContentPlaceHolder1_ftbVENDORPAYMODE").value = gv.rows[i].cells[7].innerHTML;
                        document.getElementById("ctl00_ContentPlaceHolder1_ftbVENDORPAYDATE").value = gv.rows[i].cells[8].innerHTML;
                        document.getElementById("ctl00_ContentPlaceHolder1_ftbVENDORPAYDATE").value = gv.rows[i].cells[9].innerHTML;
                }
            }

        }

ASP端
GV

                    <ItemTemplate>
                        <asp:CheckBox ID="cbVENDORCHECK" runat="server" onclick="SelectedSingle('t1_ctl00_ContentPlaceHolder1_fgvD1',this)" Width="95%" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="VENDORCHECK" HeaderText="建議廠商" Visible="false"></asp:BoundField>
           

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

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