2015年11月20日 星期五

asp.Net ObjectDataSource output parameter

一個查詢功能
有與DB溝通的Class,查詢方法會回拋DataTable
前端做GridView+ObjectDataSource
現在想要做後端驗證

驗證的方式是在傳入參數加入一個自訂類別 myValidClass的 output參數叫msg
在函式開頭就會先做驗證
有錯誤的時候msg的status屬性就會是false
並且msg的msg屬性會塞錯誤訊息

在網頁端的ODS加上
<asp:Parameter Type="Object" Direction="Output" Name="msg" />

並且加入OnSelected方法ods_Selected
<asp:ObjectDataSource runat="server" ID="ods" .... OnSelected="ods_Selected">

.cs端的ods_Selected方法
protected void ods_Selected(object sender, ObjectDataSourceStatusEventArgs e)
    {
        myValidClass msg = (myValidClass)e.OutputParameters["msg"];
        if (!msg.status)
        {
            ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alert", "alert('"+msg.msg+"');", true);
        }
    }

DB溝通class的方法

public DataTable search(string parameter1, out myValidClass msg)
{
    DataTable dt=new DataTable();
    //Do your validate method
    msg=new myValidClass();
    msg.status=true;
    if(string.IsNullOrEmpty(parameter1))
    {
        msg.status=false;
        msg.msg="參數1不可為空";
    }
    if(msg.status)
    {
        dt=db.getData(parameter1);
    }
    return dt;
}

這樣在做完查詢後ods_Selected方法就會檢查msg有沒有錯誤,
有錯誤就會alert錯誤訊息

沒有留言:

張貼留言