在這一節中,我們將為大家介紹Ajax新元件的Validate功能,在Validate功能中我們提供了四種檢核模式:1.NotNull 2.內建方式(即作基本的數值類型檢測、Mail格式檢測等) 3.JavaScript方式檢測 4. ServerMethod方式檢測。在下面的例子裏我們使用bFormViewbOrders,為大家介紹這幾個檢核功能。

AjaxGridViewValidate方式

NotNull功能檢測Detail的單價以及數量是否為空

首先,我們回到bFormViewbOrders,找到agvDetail右擊滑鼠選擇屬性。在它的Columns屬性右側找到按鈕,點開後我們找到colUnitPrice以及colQuantity將它的AllowNull設定為False,表示這個欄位不允許為空。

設定完成後,我們點擊確定並選擇保存按鈕。現在我們一起來瀏覽一下效果。通過InfoLogin.aspx登入,我們打開“AjaxFromView訂單管理 ”這個Menu。在打開畫面中我們新增一個明細,輸入產品編號後,點擊保存按鈕,此時若檢測不成功系統會自動Focus在第一個檢測未成功的欄位上,同時當滑鼠移動到該欄位時,系統出現提示語

內建檢測功能--檢測Detail的單價為浮點數(Float)以及數量為整數(int)

同樣,我們回到bFormViewbOrders,找到agvDetail右擊滑鼠選擇屬性。在它的Columns屬性右側找到按鈕,點開後我們找到colUnitPrice將它的ValidType設定為Float以及colQuantity將它的ValidType設定為IntValidType屬性是專門用來設定欄位元元的檢測方式的。它共分為9中模式。None表示不檢測;Method表示通過方法的模式進行檢測,在使用該模式時,需要配合Validate Method,在下面的的步驟進行說明;Alpha表示只可輸入字母;AlphaNumber表示只可以輸入字母和數字;Email表示檢測是否為正確的Mail格式;Url表示檢測是否為正確的Url位址格式;Int表示檢測是否輸入的是整數;Float表示檢測是否輸入的為浮點數;IPAddress表示是否輸入正確的IP位址。

最後,同樣,我們登陸InfoLogin.aspx,在“AjaxFromView訂單管理 ”中輸入一筆明細。當我們在單價的欄位上設定一個字元時,系統自動會出現紅色的波浪線,當我們將滑鼠移動到該欄位時,系統將顯示提示語

JavaScript--檢測Detail的單價為數字

這裡我們使用JS的方法自己來對單價進行數字格式的檢測,為了配合JS方法的數字格式檢測,我們需要將ValidType修改為Method。同時,在ValidMethod上輸入JS的方法名稱。這裡的方法名稱同Default一樣不需要加上小括號。

設定完成後,我們點擊保存按鈕,接下來我們需要在中,加入JS

的方法。由於在Default的功能中我們已經寫過一個JS的方法了,因此我們將checkNumber的方法寫在Default方法的下方。如下圖:

最後,我們將已經完成的程式存檔,一起來瀏覽產生的效果如下圖:

ServerMethod方式--檢測Detail選擇的產品是否有庫存

在此處的檢測我們需要根據選擇的產品編號,以及訂單的訂料數量,然後回到後端檢測是否有充足的庫存。為此我們需要通過ServerMethod的方法來進行合法性的檢測功能,設定如下,我們同樣在agvDetailColumns屬性裡找到colQuantity欄位。將它的檢測方式(ValidType)設定為MethodsValidMethod設定為sOrders. checkStock ValidateText為“庫存不足,請補貨後再訂料”。 其中,ValidateText的屬性用來配合ServerMethod的方式的合法性檢測的。

接下來,我們就需要在sOrders這個Server端加入如下圖中的程式內容。其中方法的傳類型需要設定為object[],其中第一個值為0,第二個參數為傳得true或者false,表示檢測是否成功。其中方法默認傳入參數為object[]類型,object[0]為合法性檢測的欄位輸入值,object[1]為合法性檢測的欄位所在的HashTable。本個例子方法內容如下圖:請注意,該內容需要寫在public class component

/// <summary>

/// 檢測該產品是否有足夠的庫存提供訂料數量

/// </summary>

/// <param name="objParam">objParam[0]為合法性檢欄位輸入值,objParam[1]為合法性檢所在HashTable</param>

/// <returns>object[0]為固定格式,objcet[1]true表示檢成功,否則 檢失敗 </returns>

        public object[] checkStock(object[] objParam)

        {

            SqlConnection connection = (SqlConnection)AllocateConnection(this.GetClientInfo(ClientInfoType.LoginDB).ToString());

            SqlCommand command = new SqlCommand();

            if (connection.State != ConnectionState.Open)

            {

                connection.Open();

            }

            int quantity = (string.IsNullOrEmpty(objParam[0].ToString()) ? 0 : Convert.ToInt32(objParam[0].ToString())); //合法性檢測欄位

            System.Collections.Hashtable hashTable = (System.Collections.Hashtable)objParam[1]; //合法性檢測所在行

            int productId = (int)hashTable["ProductID"];

            string sql = "select ProductID from products where UnitsInStock - " + quantity + " < 0 and ProductID = '" + productId.ToString() + "'";

            command.CommandText = sql;

            command.Connection = connection;

            SqlDataAdapter dataAdapter = new SqlDataAdapter(command);

            DataSet ds = new DataSet();

            dataAdapter.Fill(ds);

            if (connection != null)

            {

                connection.Close();

                ReleaseConnection(this.GetClientInfo(ClientInfoType.LoginDB).ToString(), connection);

            }

            if (ds.Tables[0].Rows.Count > 0)

            {

                return new object[] { 0, false };

            }

            return new object[] { 0, true };

        }

添加了方法後,我們需要在ServerserviceManager上添加一個Service。首先選中serviceManager,找到ServiceCollection這個屬性,點開右側的按鈕。在集合編輯器中添加一個Service。將DelegateNameServiceName都設定為checkStock。設定完成後,請重新建制(build) sOrders這支程式。最後,重新啓動一下EEPNetServer

最後,我們輸入庫存數只有6個的17號產品,我們將數量設定為9,此時點選保存按鈕時,系統會提報程式中設定的提示語句。

 

Ø  AjaxFormViewValidate方式

NotNull功能檢測Master的客戶編號是否為空

首先,我們回到bFormViewbOrders,找到AjaxFromView1右擊滑鼠選擇屬性。在它的Feilds屬性右側找到按鈕,點開後我們找到ctrlCustomerID將它的AllowNull設定為False,表示這個欄位不允許為空。

設定完成後,我們點擊確定並選擇保存按鈕。現在我們一起來瀏覽一下效果。通過InfoLogin.aspx登入,我們打開“AjaxFromView訂單管理 ”這個Menu。在打開畫面中我們新增一個訂單,在沒有輸入客戶編號的情況下,點擊確定按鈕,此時若檢測不成功系統會自動出現提示框,同時,在有問題的欄位下以紅色波浪線的形式進行顯示。

內建檢測功能--檢測運費為浮點數(Float)並修改提示語

同樣,我們回到bFormViewbOrders,找到AjaxFormView1右擊滑鼠選擇屬性。在它的Feilds屬性右側找到按鈕,點開後我們找到ctrlFreight將它的ValidType設定為Float。在前面的gridView功能中我們介紹過ValidType在使用Method時,我們通過ServerMethod來檢測,那麼可以通過ValidText修改提示語。同樣,在通過ValidTypeFloatInt等形式檢測時,我們同樣可以使用這個功能來完成個性化資訊的顯示。請注意,只有在使用JS的檢測方式時,我們通過檢測的程式直接回傳提示語句。不使用該屬性。

最後,同樣,我們登陸InfoLogin.aspx,在“AjaxFromView訂單管理 ”中輸入一筆。當我們在運費的欄位上設定一個字元時,系統自動會出現紅色的波浪線,當我們將滑鼠移動到該欄位時,系統將顯示提示語

JavaScript--檢測運費為數字

AjaxGridView的例子,我們通過現有的JS的方法來對運費為數字格式的檢測,為了配合JS方法的數字格式檢測,我們需要將ValidType修改為Method同時,在ValidMethod上輸入JS的方法名稱。

設定完成後,我們點擊保存按鈕。最後,我們將已經完成的程式存檔,一起來瀏覽產生的效果如下圖:

ServerMethod方式--檢測出貨日期應大於等於訂單日期

為此功能我們需要通過ServerMethod的方法來進行合法性的檢測功能,設定如下,我們同樣在AjaxFromViewFields屬性裡找到ctrlShippedDate欄位。將它的檢測方式(ValidType)設定為MethodsValidMethod設定為sOrders. checkDate ValidateText為“出貨日期應大於等於訂單日期”。

接下來,我們就需要在sOrders這個Server端加入如下圖中的程式內容。

/// <summary>

    /// 檢測出貨日期應大於等於訂單日期

    /// </summary>

    /// <param name="objParam">objParam[0]為合法性檢測欄位輸入值,objParam[1]為合法性檢測所在HashTable</param>

    /// <returns>object[0]為固定格式,objcet[1]true表示檢測成功,否則檢測失敗</returns>

        public object[] checkDate(object[] objParam)

        {           

            DateTime shippedDate = new DateTime();

            if (!string.IsNullOrEmpty(objParam[0].ToString()))

                shippedDate = Convert.ToDateTime(objParam[0].ToString()); //合法性檢測欄位

            System.Collections.Hashtable hashTable = (System.Collections.Hashtable)objParam[1]; //合法性檢測所在行

            DateTime orderDate = Convert.ToDateTime(hashTable["OrderDate"]); 

           

            if (shippedDate.Year != 1 && shippedDate.Date.CompareTo(orderDate.Date) < 0)

            {

                return new object[] { 0, false };

            }

            return new object[] { 0, true };

        }

添加了方法後,我們需要在ServerserviceManager上添加一個Service。將DelegateNameServiceName都設定為checkDate。設定完成後,請重新建制(build) sOrders這支程式。最後,重新啓動一下EEPNetServer現在一起來新增一筆Master,同時將出貨日期修改為小於訂單日期,點擊存檔後,結果如下:


訊光科技系統股份有限公司

Converted from CHM to HTML with chm2web Pro 2.85 (unicode)