# 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>
```

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://johch3n611u.gitbook.io/c50108/ju-li-cheng-bei/201902/2019-0218.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
