目前日期文章:201012 (11)

瀏覽方式: 標題列表 簡短摘要

1.資料在資料庫系統中,通常是指格子內的文字、數字,但單一格子的資料是沒有意義的,以身分證字號為例,必須結合姓名、電話、等..欄位,才形成一個人的資本資料,對資料庫而言,此一基本資料就是紀錄

2.資料經過處理,產生某種特殊意義(提供有用的訊息),就可視為資訊(Infomation),而此一整理的動作,在電腦內就是使用資料庫,其作用就是將原本雜亂無章的資料,經由資料庫的處理,轉化為可以依不同目的,取得的資訊。

3.資料庫系統發展史:集中式處理→主從架構→分散式處理

資料庫架構發展史.gif  

4.資料庫管理系統發展史:階層式→網路式→關聯式

5.正規化:是系統分析階段必須完成的動作,目的是在關聯式架構中,適當及正確的切割、建立多個關聯表,在實務上稱為資料表。
正規化的目的是確立使用多少資料表。
正規化的資料,可擁有最節省儲存空間及便於編輯等優點。
正規化的方法是逐步分解,同時必須保留原意

6.WHERE及HAVING
使用群組之後,可以在群組及非群組欄位使用條件,但語法不同,群組欄位是HAVING,非群組欄位是WHERE,且作為WHERE的欄位無法顯示在查詢結果。
WHERE條件的欄位不可置於SELECT及GROUP BY之後;HAVING則可。

7.資料庫系統少應包含以下內容:人的參予、資料庫管理系統、資料庫、應用程式及開發工具。

8.資料庫管理系統(DBMS)是指,在特定需求及目的下,由一個或多個程式組成。

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

夫妻吵架的藝術 .千萬不要贏有道理

朋友間 也是一樣

贏得談話 失去友誼

夫妻吵架的藝術[男女之間]

美滿的婚姻不是光憑著夫妻兩人循規蹈矩,不做錯事情,
就可以保證得到的。兩個人還有一個重要的功課去學習,
就是如何處理彼此之間的衝突。

1.夫妻之間,吵架是很難避免的,應該視為正常現象,不必驚慌。

夫妻兩人,不僅性別不同,性格、觀念、習慣等亦互有差異。
戀愛時,彼此還有機會掩飾;結了婚,朝夕相處,互動頻繁,
大大小小的衝突是無法避免的。面對這些衝突時,若是大驚小怪,
以為有了爭執就表示兩個人不適合在一起,這是一種錯誤。

反之,若以為美滿的婚姻就是兩個人永遠不爭吵,所以在衝突時,
只好極度的容忍,百般的委曲求全,以維持一個表面的和平狀態,
這也是不正常的現象。

事實上,夫妻應該以積極的角度來看吵架。「會」吵架的夫妻
(即知道吵架的原則的人),兩人之間的感情會愈來愈好,
而且吵架的次數也會愈來愈少。

2.吵架是「角度」問題,而不是「是非」問題。

夫妻吵架的主要原因是以為事情一定只有一個答案。吵架者的基
本心態是「這件事一定是我對,我的另一半一定錯了。」問題是
當兩個人都這樣想時,吵架就層出不窮了。

事實上,家庭糾紛、夫妻爭執等經常都沒有固定的答案,
他們純粹是角度問題,而不是是非問題。

「會吵架」的人在爭執的過程中,努力的去體會對方的真正意思,
或比較兩人之間的差距在那?

「不會吵架」的人,在爭執的過程中卻極力的要駁倒對方,
只要證明自己的「無誤」,結果反而兩敗俱傷。

3.夫妻吵架應該「講情」,而不是「講理」。

一般吵架的特徵是爭理,所以拚命的抓住對方的語病,找出對方
邏輯的缺陷,集中火力而攻之,讓對方沒有招架的餘地。問題是
「爭理」的過程中往往會「傷情」,贏了理往往使對方更對你沒
有感情而已。夫妻之間的爭執用「交情」來處理,遠比用分析、
辯論的吵架要有建設性。

4.千萬不要在第三者面前吵架。

吵架者為了證實自己是對的,經常喜歡投訴局外的第三者,希望
別人會支持他。而為了爭取較多的同情,就必須不斷的提到配偶
的不是。這種在第三者前控訴配偶的習慣對夫妻之間的感情破壞
性極大,夫妻之間必須竭力避免,否則受害的還是自己。

「會」吵架的人只希望夫妻兩人能面對面的處理彼此之間的衝突,
不願在父母、朋友、同事面前吵,如此兩個人感情復原的可能性
就可以提高。

5.千萬不要贏。

夫妻吵架不管誰贏誰輸,事實上沒有贏者,雙方都是輸家。

萬不得已吵架時,會吵架的人頂多只是「點」到為止,
從來不想贏架。

幾年前,美國有人研究受虐待的太太(Abused Wives),
結果發現,挨打的太太們的共同特徵是她們每次在吵架時都是吵
贏先生的。而先生們既然無法在言詞上得到優越感或成就感,
只好用拳頭來爭取了。可見吵贏了架不僅沒有實質上的好處,
而且可能會招來毒打。

會吵架的人,事事給對方留餘地,讓對方有臺階可下,
不會吵架的人卻時時想把對方趕盡殺絕。

6.敘述事情的真相,不要加油添醋的形容自己的感覺。

吵架一定是事出有因。

「會」吵架的人在吵架的過程中會集中在事情的敘述上,
讓對方知道自己的狀況與需要;

「不會」吵架的人卻喜歡誇大的表達自己在生氣,
因此常用最偏激的形容詞來激怒對方。

例如某個家庭主婦因為養育四個幼小的子女而無暇整理家務,
導致家中髒亂不堪。

若丈夫懂得如何「吵」的話,他不妨敘述問題的真相即可。
如「太太,妳一定很忙,家中連一個乾淨的碗也沒有!」太太聽
到這句話時,也許會覺得愧疚趕快洗碗。 不會「吵」的丈夫若說:
「妳這又懶、又邋遢的女人,簡直髒得跟豬一樣……」
家中的大戰就無法避免了。

7.先認輸的人才是大勇者。

吵架既然是角度不同所引起的衝突,成熟的人會極力的設法去避免。
而避免吵架的最好的方法就是承認對方的意見可能比自己的好。

這種反應需要有足夠的自信心,與成熟度的人才能做出來,但是
值得大家去學習。對自己的配偶讓步絕對不是損失,而是收穫。
而配偶聽到對方先讓步時,千萬不可說:「早就說你錯了,
到現在才承認!」

相反地,應該給配偶更多的鼓勵與尊敬,那麼下一次吵架時,
配偶就更願意先讓步了。

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

加入參考 => COM => Microsoft Excel 10.0 Object Library 後,發生下列錯誤:
CLSID {00024500-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80070005

解決辦法:
1.執行 dcomcnfg.exe(元件服務)
2.主控台根目錄>元件服務>電腦>我的電腦>DCOM設定>找到Microsoft Excel 應用程式>右鍵>內容
3.安全性設定:每個自訂都新增使用者IUSR_servername及IWAM_servername,設定允許存取。
4.識別碼:要設定使用者。(但是我一直設定失敗,所以我設定 互動使用者-目前登入的使用者)


參考
http://tlcheng.twbbs.org/TLCheng/Basic/vbs/dcom/automation.htm
http://www.dotblogs.com.tw/darren.net/archive/2009/11/02/darren.net_asp.net_com_vsto_excel_word.aspx

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()


function getPathName()
{
    if(window.location.protocol =="file:")
    {
        var x = unescape(window.location.pathname);

        for(;x.lastIndexOf("/")>0;)
        {
            x=x.replace("\/","\\");
        }
        var pos = x.lastIndexOf("\\");

        var pname=x.substring(1,pos+1);

        return pname;
    }
    else
    {
        return null;
    }
}

var fname = "db1.mdb";
fname = getPathName() + fname;

var strSQL = "SELECT * FORM TABLE";

/************** 寫法1 **************/
var objConn = new ActiveXObject("ADODB.Connection");
var strConnString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="+fname;
objConn.Open(strConnString);

var objRS = objConn.Execute(strSQL);
/***********************************/

/************** 寫法2 **************/
var objConn = new ActiveXObject("ADODB.Connection");
objConn.Provider = "Microsoft.Jet.OLEDB.4.0";
objConn.ConnectionString = "Data Source=" + fname;
objConn.open;

var objRS = new ActiveXObject("ADODB.Recordset");
objRS.open(strSQL,objConn);
/***********************************/


var iFieldsCount = objRS.Fields.Count - 1;

if (!objRS.EOF)
{
    for (var i=0; i <= iFieldsCount; i++)
        document.wirteln(objRS.Fields(i).Name);

    while (!RS.EOF)
    {
        for (var i=0; i <= iFieldsCount; i++)
            document.wirteln(objRS.Fields(i).Value);

        objRS.moveNext();
    }
}

objRS.Close();
objConn.Close();


/* 補充說明
*
* 1.ActiveXObject只有IE可以用
*
* 2.ConnectionString有很多種類
* 可參考網址: http://www.devguru.com/technologies/ADO/8533.asp
*
* OLE DB Provider for Active Directory Service:
* "Provider=ADSDSOObject;"
*
* OLE DB Provider for Index Server:
* "Provider=MSIDXS;"
*
* OLE DB Provider for Internet Publishing:
* "Provider=MSDAIPP.DSO; Data Source=http://www.devguru.com/guru_dir;"
*
* OLE DB Provider for Microsoft Jet:
* "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=GuruData.mdb;"
*
* OLE DB Provider for ODBC Databases:
* "Provider=MSDASQL; Driver={SQL Server}; Server=GuruServer;
* DataBase=GuruDatabase;"
*
* OLE DB Provider for Oracle:
* "Provider=MSDAORA; Data Source=GuruTable;"
*
* OLE DB Provider for SQL Server:
* "Provider=SQLOLEDB; Data Source=GuruServer; Network Library=DBMSSOCN;
* Initial Catalog=GuruPubs;"
*
*
* 3.使用寫法2的objRS.open(strSQL,objConn)改成objRS.open(strSQL,objConn,1)
* 將第3個參數設為1,可以啟用分頁、指定目前頁數的功能
*
* 4.其他說明待補
*
*/

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

<script language="javascript">

var test =

{

max:function(a,b){ return a>b?a:b; },

min:function(a,b){ return a<b?a:b; }

}

alert(test.max(1,2)); //會顯示2

alert(test.min(1,2)); //會顯示1

</script>

可以把同類型的function放在一個object裡面,看起來比較明瞭,code也比較好整理。

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

引用: http://berrybit.pixnet.net/blog/post/25290824

select 學號, avg(成績) as 平均成績 from 成績表 group by 學號 order by avg(成績) desc
p.s.計算平均成績,其中" as 平均成績 "為設定欄位名稱," group by 學號"為同一學號為一組作計算, desc 為遞減排列, avg為計算平均值,sum則為計算總成績

應用:
SELECT AVG(數值) AS 數值, 測項
FROM 資料表名稱
WHERE (設備 = @設備名稱)
AND (日期時間 >= @日期時間開始)
AND (日期時間 <= @日期時間結束)
GROUP BY 測項
ORDER BY 測項
取得指定的設備,某一段時間的平均數值。

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

1.ping 127.0.0.1
127.0.0.1是Lookback位址,封包不會送到網路上,而是送至本機的Lookback驅動程式,此一動作是測試TCP/IP是否正常運作。

2.ping 本機IP位址
若步驟1本機TCP/IP設定正確,接下來可試試網路裝置是否正常。若有問題,則不會有回應。

3.ping 對外連線的Bridge/Gateway/Swtich/Router...等
若成功,代表內部網路與對外連線的設備正常。

4.ping 網路中另一台電腦的IP位址
若有回應,代表IP設定全部正常。

5.ping 網際網路上的任何有效網址
如有回應,代表DNS設定無誤。

以上是粗略的診斷,從書上看到整理出來的,參考參考就好。

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

OSI OSI功能與說明 OSI Layer DoD TCP/IP協定組合
Application Layer
應用層
應用程式,如電子郵件系統,資料庫管理系統。 Layer-7 Application
應用層
Telnet FTP SMTP
Presentation Layer
出席層
資料的壓縮還原、網路安全、檔案傳送。 Layer-6
Session Layer
會談層
網路管理、密碼辨識、簽到簽退、網路監控。 Layer-5
Transport Layer
傳輸層
資料傳輸錯誤的偵測和復原,資料封包的 重行排列。 Layer-4 Transport
傳輸層
(Host-to-Host)
TCP UDP
Network Layer
網路層
定義虛擬電路的建立、維持和終止,封包交換的路由選擇、擁塞控制等。 Layer-3 Network
網路層
(Internet)
        ICMP
IP
  ARP   OSPF RIP
Data Link Layer
資料連結層
定義把傳輸資料分裝成資料封包的規範, 檢查資料傳輸中是否有錯誤發生,執行資料傳送中的流量控制及鏈路管理。 Layer-2 Link
連結層
(Network Interface)
LLC
(Logical Link Control)
MAC
(Media Access Control)
Physical Layer
實體層
定義實際傳輸資料的硬體設備的規範,像是纜線規格、接頭尺寸、信號電壓、資料傳輸時序等等。 Layer-1

實體連線

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

程式語言命名慣例

Visual Basic:

Visual Basic命名慣例是使用:匈牙利命名法、PascalCasing、camelCasing。

匈牙利命名法:原則將名稱分為兩個部份,字首3個字母小寫為變數之型別,字尾為變數的意義以大小寫混用取名。例:Dim strUserName As String = "Allen",Dim intAge As Integer = 20。

PascalCasing命名法:每個字的第一個字元為大寫,例如:FirstName、LastName。

camelCasing命名法:第一個字元為小寫,例如:firstName、lastName。

※Visual Basic變數名稱不分大小寫,編輯器會自動依據宣告時的大小寫樣式自動變更使用者輸入的變數大小寫。

Visual Basic命名習慣:

Global變數會在名稱前加上「g_」,例如: g_strUserName。

Module或Class內的變數,習慣在名稱前加上「m_」,例如: m_strUserName。


以下轉貼自:http://victorgau.blogspot.com/2009/01/java-c.html

JAVA 跟 C# 的命名慣例

JAVA:

大致上命名的慣例比 C# 統一,大概是下面這樣。

Packages(套件):
使用小寫字母。例如:java.io.*。

Classes(類別):
每一個英文單字的第一個字母大寫。例如:MyClass。

Methods(方法), Attributes(屬性), Variables(變數):
除了第一個英文單字外,每一個英文單字的第一個字母大寫。
例如:myMethod, myAttribute, myVariable。

C#:

C#命名方式彈性比較大,但是不建議傳統的 Windows Programming 中使用的匈牙利式命名法。
C#的慣例大概是使用 Pascal Casing 跟 Camel Casing。

Pascal Casing:所有英文單字的第一個字母都是大寫,其他字母小寫。例如:MyClass。

Camel Casing 指的是,除了第一個英文單字外,所有英文單字的第一個字母都是大寫,其他字母小寫。例如:myVariable。

哪些東西使用 Pascal Casing,哪些使用 Camel Casing 呢?

Pascal Casing:
Class/Struct, Interface, Enum values, Enum type, Events, Exception, Methods, Namespace, Property。
另外:
Interface 以大寫的 I 做為開頭。
Exception 類別以 Exception 做為結尾。
EventHandler 以 EventHandler 做結尾。

Camel Casing:
Public/Protected/private Fields, Parameters

有些人說 Public Fields 建議使用 Pascal Casing,我覺得自己跟自己的 Team 習慣就好了。

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

本文引用自yc421206-[C#.NET] 如何 使用 多執行緒 Thread / 跨執行緒 存取UI
本文引用自catyku-C# Thread應用

//前置動作
using System.Threading;
//Thread基本三步驟
//1.建立ThreadStart委派
ThreadStart myRun = new ThreadStart(RunSample01);
//2.建立Thread 類別
Thread myThread = new Thread(myRun);
//3.啟動執行緒
myThread.Start();
//步驟1.2可以合併
Thread myThread = new Thread(new ThreadStart(RunSample01));
//我在寫無窮回圈時,發現按[X]關閉Form,迴圈還是在背景執行,所以到MSDN找到已下解決方法。
/* 來自MSDN的說明...
* 執行緒不是背景執行緒就是前景執行緒。
* 背景執行緒和前景執行緒相同,唯一差別在於背景執行緒不會防止處理序終止。
* 一旦終止屬於處理序的所有前景執行緒之後,Common Language Runtime 就會結束處理序。
* 剩下的所有背景執行緒則會在尚未完成之前全部停止。
*/
//將thread設定為背景執行緒(如果設定為false,按[X]關閉Form,執行緒仍在背景繼續執行,故要設定為true。)

myThread.IsBackground = true;
//可以將thread宣告成Global變數,但是不能在此new
public Thread thread1;
//如果宣告成Global變數,記得在function內new thread
//傳值的範例
private void function() {
    threadClass1 obj = new threadClass1("thread1", 10);
    thread1 = new Thread(obj.runMe);
    thread1.IsBackground = true;
    thread1.Start();
}

//class別放錯地方了,要跟form class在同一層
class threadClass1
{
    private String title;
    private int i;
    public thread1(String title, int i)
    {
        this.title = title;
        this.i = i;
    }
    public void runMe()
    {
        Console.Write(title + ":開始 \r\n");
        System.Threading.Thread.Sleep(1000);
        for (int i = 0; i < this.i; i++)
        {
            Console.Write(title + "\r\n");
            System.Threading.Thread.Sleep(2000);
        }
        Console.Write(title + ":結束 \r\n");
        System.Threading.Thread.Sleep(1000);
    }
}
//用上面的code隨筆寫一個範例...按button時會new thread執行process,thread還沒執行完畢,不允許再new。
public Boolean flag=false;

private void button7_Click(object sender, EventArgs e)
{
    if (flag == false)
    {
        function();
        flag = true;
        return;
    }

    if (thread1.IsAlive) //如果thread 還存在(還沒執行完畢)
    {
        Console.Write("thread:還沒結束 \r\n");
        System.Threading.Thread.Sleep(1000);
    }
    else
    {
        function();
    }
}
//完整範例Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Thread t1,t2,t3;
        public Boolean flag=false;

        public Form1()
        {
            InitializeComponent();
        }

        private void RunSample01()
        {
            Console.WriteLine("建立了一個執行緒{0}", Thread.CurrentThread.ManagedThreadId);
            Thread.Sleep(1000);
        }

        private void RunSample02()
        {
            for (int i=0;;i++)
            {
                Console.WriteLine("執行緒{0}: 迴圈第{1}次執行", Thread.CurrentThread.ManagedThreadId, i+1);
                Thread.Sleep(500);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //1.建立ThreadStart委派
            //ThreadStart myRun = new ThreadStart(RunSample01);
            //2.建立Thread 類別
            //Thread myThread = new Thread(myRun);
            //上述兩句可合併
            Thread myThread = new Thread(new ThreadStart(RunSample01));
            //3.啟動執行緒
            myThread.Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //1.建立ThreadStart委派
            ThreadStart myRun = new ThreadStart(RunSample02);
            try
            {
                //2.建立Thread 類別
                Thread myThread = new Thread(myRun);
                /* 執行緒不是背景執行緒就是前景執行緒。
                 * 背景執行緒和前景執行緒相同,唯一差別在於背景執行緒不會防止處理序終止。
                 * 一旦終止屬於處理序的所有前景執行緒之後,Common Language Runtime 就會結束處理序。
                 * 剩下的所有背景執行緒則會在尚未完成之前全部停止。
                 */
                //設定為背景執行緒(如果設定為false,按[X]關閉Form,執行緒仍在背景繼續執行,故要設定為true。)
                myThread.IsBackground = true;
                //3.啟動執行緒
                myThread.Start();
            }
            catch (Exception)
            {
                //例外
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            thread1 obj = new thread1(textBox1.Text,10);
            Thread t = new Thread(obj.runMe);
            t.IsBackground = true;
            t.Start();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            thread1 obj = new thread1("擦窗戶",10);
            t1 = new Thread(obj.runMe);
            t1.IsBackground = true;
            t1.Start();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            thread1 obj = new thread1("掃地",10);
            t2 = new Thread(obj.runMe);
            t2.IsBackground = true;
            t2.Start();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            try
            {
                if (t2.IsAlive) //如果thread t2 還存在(還沒執行完畢)
                {
                    Console.Write("掃地還沒結束不能拖地\r\n");
                    System.Threading.Thread.Sleep(1000);
                }
                else
                {
                    thread1 obj = new thread1("拖地", 10);
                    t3 = new Thread(obj.runMe);
                    t3.IsBackground = true;
                    t3.Start();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("應該還沒掃地,所以出現錯誤!");
            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {
                fun();
                flag = true;
                return;
            }

            if (t3.IsAlive) //如果thread 還存在(還沒執行完畢)
            {
                Console.Write("thread:還沒結束 \r\n");
                System.Threading.Thread.Sleep(1000);
            }
            else
            {
                fun();
            }
        }
        
        private void fun()
        {
            thread1 obj = new thread1("thread", 10);
            t3 = new Thread(obj.runMe);
            t3.IsBackground = true;
            t3.Start();
        }
    }

    class thread1
    {
        private String title;
        private int i;
        public thread1(String title, int i)
        {
            this.title = title;
            this.i = i;
        }
        public void runMe()
        {
            Console.Write(title + ":開始 \r\n");
            System.Threading.Thread.Sleep(1000);
            for (int i = 0; i < this.i; i++)
            {
                Console.Write(title + "\r\n");
                System.Threading.Thread.Sleep(2000);
            } 
            Console.Write(title + ":結束 \r\n");
            System.Threading.Thread.Sleep(1000);
        }
    }

}

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()

目標:
1.使用SqlDataSource與GridView製作不用撰寫程式碼之頁面。
2.使用Ajax元件讓網頁不閃爍。
3.使用GridView元件編輯功能,並附加使用者輸入資料之驗證功能。

目標1:使用SqlDataSource與GridView製作不用撰寫程式碼之頁面。
1.從工具箱拉出SqlDataSource元件,設定好資料來源
2.從工具箱拉出GridView元件,將資料繫結至SqlDataSource元件
3.勾選 啟用編輯(此步驟將自動產生編輯功能,不需撰寫程式碼)

目標2:使用Ajax元件讓網頁不閃爍。
1.從工具箱Ajax擴充功能中,拉出ScriptManager,放在頁面最上方
2.從工具箱Ajax擴充功能中,拉出UpdatePanel放置於頁面中央
3.將顯示資料的元件(此處為GridView)放置於UpdatePanel管制的範圍中
4.執行網頁換頁將不會產生閃爍(不會Reload網頁)

目標3:使用GridView元件編輯功能,並附加使用者輸入資料之驗證功能。
1.開啟GridView的SmartTag功能表,選擇編輯樣板
2.選擇EditItem Template(編輯時顯示的畫面)
(請注意,欲編輯的欄位需要先轉換成TemplateField)
3.預設的編輯模式時會出現的TextBox
4.此時我們增加兩個驗證元件於TextBox旁
RequiredFieldValidator: 必要輸入驗證控制項,意思就是檢查一定要有輸入
RangeValidator: 範圍檢查驗證控制項,意思就是檢查範圍,有蠻多屬性可以慢慢研究
5.分別設定自己想要的屬性
6.結束樣版編輯
7.執行結果

參考圖片:
GridViewEdit_Ajax_Validator_1.gif
GridViewEdit_Ajax_Validator_2.gif

伊 發表在 痞客邦 PIXNET 留言(0) 人氣()