2013-10-09 3 views
1

브랜치를 검색하는 방법이 있습니다. 매개 변수가 지점 코드이며이 지점 여기서웹 메서드 웹 서비스에서 데이터를 반환하지 않습니다.

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; 
       } 


      } 
     } 
    } 

내 코드 (나는 이것이 맞다면 잘 모릅니다) 내 웹 서비스에서 내 웹 방법에의 세부 사항을 반환해야

[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>"); 

     } 
    } 

Help! 지사 이름, 지역 번호, 지역 코드, 회사 코드 및 회사 명을 반환하지 않습니까?

답변

1

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

다음과 같이 웹 방법을 변경

당신이 당신의 방법 서명 때문에이 웹 서비스

AccessRequest request = iTicketWebService.SearchBranchAccessRequest(accessrequest); 

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

를 호출 할 때 당신은뿐만 아니라

public accessrequest SearchBranch(AccessRequest accessrequest) 
{ 

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

SearchBranch() 방법을 변경해야 위의 구현과 함께 변경, null 개체 반환의 경우 당신은 그것을 고려할 수 있습니다 s false 사례를 현재 구현으로 사용하고 객체가 서비스에서 반환되면 true 사례로 간주 할 수 있습니다.

당신은 서비스 방법에서 truefalse을 반환 할 필요가 있고 또한 그 서비스 방법에서 이상 반환 할 수

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

아래 당신이 좋아, 모두를 반환하는 사용자 정의 클래스를 가질 수 다음 업데이트 된 개체를해야하는 경우 . 클라이언트 쪽에서 Boolean 값과 AccessRequest

+0

이 모두 참 (true)과 거짓 (false)을 반환하므로 내 메서드 (SearchBranch)와 충돌합니다. –

관련 문제