2013-10-09 56 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。 –