2013-10-09 57 views
1

我有一個搜索分支的方法。該參數是分公司的代碼,它應該返回分支Web方法Web服務沒有返回數據

public bool SearchBranch() 
    { 
     using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DBReader"].ConnectionString)) 
     { 

      using (SqlCommand com = new SqlCommand("Reader.usp_SearchBranch", con)) 
      { 
       com.CommandType = CommandType.StoredProcedure; 
       com.Parameters.Add("@BranchCode", SqlDbType.Int).Value = this.BranchCode; 

       con.Open(); 

       SqlDataReader dr = com.ExecuteReader(); 
       if (dr.Read()) 
       { 
        this.BranchName = dr.GetValue(0).ToString(); 
        this.AreaCode = dr.GetValue(1).ToString(); 
        this.RegionCode = dr.GetValue(2).ToString(); 
        this.CompanyCode = dr.GetValue(3).ToString(); 
        this.CompanyName = dr.GetValue(4).ToString(); 
        return true; 
       } 
       else 
       { 
        return false; 
       } 


      } 
     } 
    } 

這裏是我的代碼在我的Web方法在我的Web服務(我不知道這是否是正確的)的細節

[WebMethod(Description = "Search Affected User from Database in Access Request")] 
    public bool SearchBranchAccessRequest(AccessRequest accessrequest) 
    { 
     return accessrequest.SearchBranch(); 
    } 

而且這是我如何訪問/在我的網頁上調用網絡方法

protected void SearchBranchButton_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      accessrequest.BranchCode = Convert.ToInt32(BranchCodeTextBox.Text); 
      iTicketWebService.SearchBranchAccessRequest(accessrequest); 

      if (iTicketWebService.SearchBranchAccessRequest(accessrequest) == true) 
      { 
       BranchNameLabel.Text = accessrequest.BranchName; 
       AreaLabel.Text = accessrequest.AreaCode; 
       RegionLabel.Text = accessrequest.RegionCode; 
       CompanyCodeLabel.Text = accessrequest.CompanyCode; 
       CompanyLabel.Text = accessrequest.CompanyName; 
       BranchEmailLabel.Text = accessrequest.BranchCode + "@pjlhuillier.com"; 
      } 
      else 
      { 
       this.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", "<script type=\"text/javascript\">alert('Record not found. Please try again');</script>"); 
      } 
     } 
     catch (Exception) 
     { 
      this.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", "<script type=\"text/javascript\">alert('Wrong Input. Please try again');</script>"); 

     } 
    } 

幫助!它不返回分行名稱,地區代碼,地區代碼,公司代碼和公司名稱?

回答

1

改變你的Web方法如下

public AccessRequest SearchBranchAccessRequest(AccessRequest accessrequest) 
{ 
    return accessrequest.SearchBranch(accessrequest); 
} 

,你需要改變SearchBranch()方法以及

public accessrequest SearchBranch(AccessRequest accessrequest) 
{ 

    if(you found record in database) 
    { 
     // update accessrequest here 
    }else 
    { 
     accessrequest =null; 
    } 
    // finally return the object 
    return accessrequest; 
} 

當你調用這個Web服務

AccessRequest request = iTicketWebService.SearchBranchAccessRequest(accessrequest); 

if(request!=null) 
{ 
    BranchNameLabel.Text = request.BranchName; 
} 

因爲你的方法簽名改變與上面的實現,在空對象返回的情況下,你可以認爲它是一個s false作爲您當前的實施情況,如果從服務中返回對象,則可以將其視爲true大小寫。

如果您需要從服務方法返回truefalse,也需要有更新的對象,那麼你可以自定義類返回兩個,像下面

public class SearchBrancResponse 
{ 
    public bool SearchStatus { get; set; } 
    public AccessRequest AccessReq { get; set; } 
} 

然後你可以從服務方法上面迴歸。從客戶端你有Boolean值和AccessRequest

+0

它會衝突我的方法(SearchBranch),因爲它返回true和false。 –