> For the complete documentation index, see [llms.txt](https://johch3n611u.gitbook.io/c50108/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://johch3n611u.gitbook.io/c50108/ju-li-cheng-bei/201902/2019-0218.md).

# 2019/0218/TSQL基本指令\&ASP.net左右置換表格/驗證傳值

&#x20;ftp\://{帳號}:{密碼}@{網址或ip}:port

![](/files/-LYy7_unQiRfKjWibx0z)

Select 欄位

from 表

select 姓名 from 學生

從學生資料表內選擇姓名出來查詢

沒有寫 from 就代表不是要從資料表查詢

TSQL 函數

MSDN

反白執行可以只顯示反白的

with ties 可重複名次

{% embed url="<https://www.1keydata.com/tw/sql/sql.html>" %}

## 標準表示式

### 藍字 語法

### 紫字 函式

### 黑字 欄位

### 紅字 ' ' 值

\[ ]  連續的 或 ex. a-e , a or b or c or d or e

l 管線符號  或是

% 萬用字元

\_ 幾個字元

a-z a到z

^ 除了值以外

\>

<

\=

### 灰字 指令符

\* 選擇全部

like 找尋關鍵字

between

and

## ASP 左右置換表格

#### 第二個按鈕為將左邊點選的值往右邊送

![](/files/-LYz8TtU2R6uaLBf9WTE)

![](/files/-LYzHaNfo1N1CgxmsnoW)

### Code邏輯

#### 第一個按鈕為全選

```
protected void btnAll_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < ltbInterest.Items.Count; i++)
            {
                ltbInterest2.Items.Add(ltbInterest.Items[i].Text);
            }
            ltbInterest.Items.Clear();
        }
```

按下時依次抓取左邊表單全部的值

右邊表單加上抓取後的全部的值

左邊表單刪除全部的值

#### 第四個按鈕為全部選

```
protected void btnCancel_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < ltbInterest2.Items.Count; i++)
            {
                ltbInterest.Items.Add(ltbInterest2.Items[i].Text);
            }
            ltbInterest2.Items.Clear();
        }
```

將右邊表單的值依次全部抓取

左邊表單加上抓取的值

右邊表單刪除值

#### 第二個按鈕為將左邊點選的值往右邊送

```
protected void btnYes_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < ltbInterest.Items.Count; i++)
            {
                if (ltbInterest.Items[i].Selected)
                {
                    ltbInterest2.Items.Add(ltbInterest.Items[i].Text);
                    ltbInterest.Items.RemoveAt(i);
                }
            }
        }
```

將左邊表單值全部依次抓取

並判斷該值是否有被選取

有的話執行右邊表單加上抓取的值

左邊表單刪除抓取的值

#### 第三個按鈕為將右邊點選的值往左邊送

```
protected void btnNo_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < ltbInterest2.Items.Count; i++)
            {
                if (ltbInterest2.Items[i].Selected)
                {
                    ltbInterest.Items.Add(ltbInterest2.Items[i].Text);
                    ltbInterest2.Items.RemoveAt(i);
                }
            }
        }
```

依次抓取右表所有的值

並判斷該值是否有被選取

有的話增加該值置左邊表單

並刪除該值

## Web值的狀態

程式&網頁必須考慮狀態

post back 客傳伺再回傳客 狀態必須消失

但為何會還有資料 ? 因為Webform自己設定幫你保留狀態了

原始網頁寫法必須搞定狀態管理，保留狀態值

webform預設因為安全性的關係會清掉密碼欄的狀態

推播 即時互動 => 伺服器有改變且主動傳值到客戶端

網頁是無法做到的因為網頁是走http必須要要求/傳值

![](/files/-LVpKS_DVqRjSf-oN7KI)

以前都是土炮方法60秒重新自動刷新一次

但現在改為當伺服器改變主動通知客戶端

一樣走http 但 websocket 由伺服器通知

## 驗證傳值

webform 驗證控制項&#x20;

### RequiredFieldValidator 只驗證是否為空值 (必填驗證器)

```
 <asp:TextBox ID="txtAccount" runat="server"></asp:TextBox>
 <asp:
 
 RequiredFieldValidator ID="RequiredFieldValidator1" 
 ControlToValidate="txtAccount" runat="server" ErrorMessage="(必填)" 
 ForeColor="Red" Font-Size="10pt">
 
 </asp:RequiredFieldValidator>
```

### debug 沒有jq

驗證模式需要jq的錯誤碼

去修改jq iis web.config

```
<configuration>
```

網站組態 關掉驗證jq

### debug 驗證器元屬性更改

如果要postback所有的按鈕都會觸發驗證器

除非設定屬性 CausesValidation="false" 關掉不用驗證的那些按鈕

### debug 錯誤型態驗證方式 ( 在猜其實跟元屬性也有關係

表單list不能用驗證是否有值來驗證

### ComparaValidator 比較驗證器

ex. 驗證型態 type

```
<asp:TextBox ID="txtBirthday" runat="server" placeholder="1990-01-12"></asp:TextBox>


<asp:
RequiredFieldValidator ID="RequiredFieldValidator5" 
ControlToValidate="txtBirthday" runat="server" ErrorMessage="(必填)" 
ForeColor="Red" Font-Size="10pt">
</asp:RequiredFieldValidator>


<asp:CompareValidator ID="CompareValidator1" runat="server" 
Operator="DataTypeCheck" Type="Date" ControlToValidate="txtBirthday" 
ErrorMessage="(格式錯誤)" ForeColor="Red" Font-Size="10pt">
</asp:CompareValidator>
```

#### Operator 作業方式

```
 <asp:DropDownList ID="ddlEduLevel" runat="server">
                            <asp:ListItem Text="請選擇"></asp:ListItem>
                            <asp:ListItem Text="國小"></asp:ListItem>
                            <asp:ListItem Text="國中"></asp:ListItem>
                            <asp:ListItem Text="高中"></asp:ListItem>
                            <asp:ListItem Text="大學"></asp:ListItem>
                            <asp:ListItem Text="研究所以上"></asp:ListItem>
</asp:DropDownList>


<asp:CompareValidator ID="CompareValidator2" 
runat="server" Operator="NotEqual" ValueToCompare="請選擇" 
 ControlToValidate="ddlEduLevel" ErrorMessage="(請選擇)" 
 ForeColor="Red" Font-Size="10pt">
 </asp:CompareValidator>
```

#### 判斷值是否等值

```
 <asp:TextBox ID="txtPwd2" 
 runat="server" TextMode="Password" 
 placeholder="請再輸入一次密碼">
 </asp:TextBox>
 
 
 
<asp:CompareValidator ID="CompareValidator3"
runat="server" Operator="Equal" ControlToCompare="txtPwd" 
 ControlToValidate="txtPwd2" ErrorMessage="(兩次密碼輸入不相同)" 
 ForeColor="Red" Font-Size="10pt"></asp:CompareValidator>
```

#### 判斷兩控制項的值
