2017-03-04 29 views
0

私はC#でWindowsフォームアプリケーションを開発しています。私のデータベースはwcfアプリケーションで扱われます。私のwcfアプリケーションでは、以下のようにview lecturers()というメソッドを持つ講師というクラスがあります。私の目的は、講師のテーブルをグリッドビューで表示することです。私IService1.csでwcfサービスの応答でDataTableを受信中にエラーが発生しました

public DataTable viewLec() 
     { 

      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["resourceAlloc"].ToString()); 

      DataTable dt = new DataTable(); 
      string vw = "select * from lecturers"; 

      SqlCommand cmd = new SqlCommand(vw,con); 

      SqlDataAdapter adp = new SqlDataAdapter(cmd); 
      adp.Fill(dt); 


      return dt; 

     } 

[OperationContract] 
     DataTable viewLecturer(); 

Service1.svc.cs:私の窓で

public DataTable viewLecturer() 
     { 
      Lecturer lec = new Lecturer(); 
      return lec.viewLec(); 

     } 

は、アプリケーションボタンクリックイベントを形成し、

private void button2_Click(object sender, EventArgs e) 
{ 
    Service1Client obj = new Service1Client(); 
    dataGridView1.DataSource = obj.viewLecturer();  
} 

上記のエラーが発生するビューボタンをクリックすると、私はなぜ理解できないのですか?

答えて

0

あなたのコードの正確なエラーはわかりませんが、最初に言及したいのは、DataTableオブジェクトをデータコントラクトとして使用することは、通常は消費されない一定量の余分なデータが含まれているためエンドアプリケーションによって。しかし、とにかく、あなたの特別なケースでは、WCFは、このクラスがシリアル化を実行するために必須のテーブル名を持たないため、オブジェクトをシリアル化することができません。この方法に従うことをお試しください:

DataTable dt = new DataTable(); 
// Must set name for serialization to succeed. 
dt.TableName = "lecturers"; 

私はあなたが持っている実際のエラーを(あなたはあなたの答えをより明確にするためにそれを投稿します)表示されていないが、少なくともこれは直列化エラーを回避するのに役立ちます。

+0

これはエラーです。私はテーブル名を今言及していませんでした。 –

+0

@HishamNawzerようこそ – Alex

関連する問題