2011-10-19 6 views
0

私は2つのテーブル、PublicationとDTPersonnelを持っています。パブリケーションには主キーがあり、もう一方(DTPersonnel)にはリンクバックパブリケーションのフィールドがあります。私はLinqDataSource用のDBMLレイアウトを送り、2つのテーブルをリンクしています。 LinqDataSourceコンポーネントを私のWebページに追加しました。LinqDataSourceにdeatil関係を認識させることができません

私は、このようDTPersonnel.DTRoleIDのフィールドを指すようにラベルデータ・バインディングを設定

<asp:FormView ID="FormView1" runat="server" AllowPaging="True" 
     DataSourceID="LinqDataSource1"> 
     <ItemTemplate> 
      <asp:Label ID="Label1" runat="server" 
    Text='<%# BIND("DTPersonnels.DTRoleID") %>'></asp:Label> 
     </ItemTemplate> 
    </asp:FormView> 
    </asp:Content> 

マイLinqDataSourceコントロールは、このような設定である:

​​

しかし、私は実行しますブラウザのアプリに次のエラーが表示されます。

Exception Details: System.Web.Query.Dynamic.ParseException: No property or field 'DTRoleID' exists in type 'EntitySet`1'

助けが素晴らしいだろう。

答えて

1

select句を指定しているので、これはデータの読み取り専用ビューです。そうであれば、あなたの問題にはかなり簡単な解決策があります。しかし、そうでない場合(そのコードがEvalではなくBindメソッドを呼び出しているので不明です)、LinqDataSourceという指定されたメンバーで、関連フィールドを更新するためにはより複雑な処理が必要です。

あなたの句にDTPersonnelsメンバーが選択されていることを確認しますが、選択肢からDTPersonnels.DTRoleIDを削除してください。 Eval("DTPersonnels.DTRoleID")に電話すると、関連レコードのメンバー値が表示されます。

しかし、スキーマファイルの設定にも問題があると考えられます。私が推測できるところから、PublicationsDTPersonnelの間に1対1の関係があると期待します。ただし、エラーはEntitySetにメンバーが存在しないことを示しているため、Publicationsの数が多いDTPersonnelの1対多の関係が許可されていることを意味します。 1対1の関係がない場合、コードは関連するレコードのDTRoleIDを表示するかどうかを判断することができません。

あなたが実際にPublicationに関連する多くのDTPersonnelが存在することは意図しない場合、あなたはDTPersonnelのリストを表示し、代わりにその関連Publicationのデータを示すの周りの他の方法からこれにアプローチすることができます。エラー自体がどこから来ている、それがここにあります迷っている場合は

+0

はい、私は多くのDTPersonnelデータ行を持っているため、DTPersonnelに付いていました。私は問題を解決するように見えるバインドの代わりにevalを使用しました – Mike

0

Select="new (DTPersonnels.DTRoleID,PublicationID, DTPersonnels, ActLAYDate, ActRRIPDate, ActPPIDate, ActPPODate, ActECTWDate, TargetECTWDate, TargetPPIDate, TargetRRIPDate, TargetPPODate, TargetLAYDate)"> 

をあなたが出版テーブルからデータを選択しているので、フィールドが「DTRoleID」を探しています。私はそのテーブルに "DTRoleID"フィールドがなく、あなたが受け取っているエラーを引き起こしていると推測しています。

関連する問題