2016-10-27 4 views
0

最終的に私たちのWebサイトに組み込むためにWCFサービスを学ぼうとしています。WCFサービスはASP.netドロップダウンリスト(WCFサービスの学習)にデータを入力します

[TestTable]というデータベースにテストテーブルを作成しました 私は、ビジュアルスタジオで作成されたテストサイトからテーブルにデータを書き込むことができました。

これで、データベースからドロップダウンリストを作成しようとしています。この場合、すべての状態のリスト。

私が紛失しているようです。私はサービスを呼び出すことができ、WCFテストクライアントのすべての状態を表示します。しかし、私はそれがASP.netドロップダウンリストに返すリストを添付する方法を把握していないようです。ここで

ここに私のIService1.cs

[ServiceContract] 
public interface IService1 
{ 

    [OperationContract] 
    //string GetData(int value); 
    string InsertApplicantDetails(ApplicantDetails appInfo); 

    [OperationContract] 
    List<US_States> GetAllStates(); 

    //CompositeType GetDataUsingDataContract(CompositeType composite); 

    // TODO: Add your service operations here 

} 

は、私は、 "dropdownStates" と呼ばれるドロップダウンリストを作成したテストのウェブサイトで

public List<US_States> GetAllStates() 
    { 
     using (JobSeekersEntities db = new JobSeekersEntities()) 
     { 
      var q = (from us_states in db.US_States 
        orderby us_states.abbr ascending 
        select us_states); 

      List<US_States> list_States = q.ToList<US_States>(); 

      return list_States.ToList(); 

     } 
    } 

GetAllStatesのための私のService1.svc.csです。
ServiceReferenceを追加しました。データベースに値を送信できるようになっています。 また、ドロップダウンリストのLoad()イベントも作成しました。

ここは私のテストページです。

public partial class TestSubmission : System.Web.UI.Page 

{ ServiceReference1.Service1Client objCon =新しいServiceReference1.Service1Client()。

protected void Page_Load(object sender, EventArgs e) 
{ 

} 

protected void dropdownStates_Load(object sender, EventArgs e) 
{ 
    //ServiceReference1.Service1Client myCon = new ServiceReference1.Service1Client(); 
    dropdownStates.Items = ???? 

} 

}

どのような援助を大幅に理解されるであろう。あなたの時間をありがとう。

答えて

1

まず、適切なデータコントラクトとサービス契約を定義してください。 以下のサンプルでは、​​米国州を2つのプロパティで定義しました。 [OperationContract]宣言と[DataContract]宣言に注意してください!

namespace WcfService1 
{ 
    [ServiceContract] 
    public interface IService1 
    { 

     [OperationContract] 
     List<US_States> GetAllStates(); 

    } 


    [DataContract] 
    public class US_States 
    { 
     [DataMember] 
     public int StateId { get; set; } 

     [DataMember] 
     public string StateName { get; set; } 
    } 
} 

次のプロジェクトにWebサービスの参照を追加AMD、このような呼び出します は(ステート名は、テキストに結合し、STATEID値に)

protected void dropdownStates_Load(object sender, EventArgs e) 
    { 
     ServiceReference1.Service1Client client = new ServiceReference1.Service1Client(); 
     dropdownStates.Items.Clear(); 
     dropdownStates.DataSource = client.GetAllStates(); 
     dropdownStates.DataTextField = "StateName"; 
     dropdownStates.DataValueField = "StateId"; 
     dropdownStates.DataBind(); 
     client.Close(); 
    } 

そして最後のサービス:

namespace WcfService1 
{ 
    public class Service1 : IService1 
    { 
     public List<US_States> GetAllStates() 
     { 
      List<US_States> result = new List<US_States>(); 
      result.Add(new US_States() { StateId = 1, StateName = "New York" }); 
      result.Add(new US_States() { StateId = 2, StateName = "Washington" }); 
      result.Add(new US_States() { StateId = 3, StateName = "Indiana" }); 
      return result; 
     } 
    } 
} 
+0

ご協力いただきありがとうございます。これは私を起こし、実行しています。それは有り難いです。 –

1
using(ServiceReference1.Service1Client client = new ServiceReference1.Service1Client()) 
{ 
     dropdownStates.Items.Clear(); 
     dropdownStates.DataSource = client.GetAllStates(); 
     dropdownStates.DataTextField = "Name"; 
     dropdownStates.DataValueField = "Id"; 
     dropdownStates.DataBind(); 
} 

ドロップダウンデータソースをリストに設定するだけで済みます。アイテムとして表示する内容とそれが持つべき値に合わせてtextとdatavalフィールドを設定し、最後にDataBindを呼び出します。

関連する問題