2012-04-25 14 views
2

私は何百ものGoogle結果ページを分析し、過去2、3日にわたってこれに対する回答を見つけようとしました。外部キーテーブルのフィールドがスタンドアロンのダイナミックデータ対応リストビュー内に表示されない

スタンドアロンの動的データページを使用して、EntityDataSourceを使用してテーブルを表示します。フィールドの1つは、サブテーブルの外部キーです。私はそれがサブテーブルからの値を表示したい。私はNorthWindsデータベースを使って簡単なケースで遊んでいます(下記のコードを参照)。 DynamicControlにDataField = "Supplier"を割り当てると、代わりにサブテーブル/クラス名( "DAL.Supplier")が表示されます。 DataField = "Supplier.CompanyName"を割り当てようとすると、「テーブル 'Product'に 'Supplier.CompanyName'という名前の列がありません」というエラーが表示されます。動的データの編集機能を利用したいので、<%#Eval( "Supplier.CompanyName")%>のテンプレートフィールドを使用しています。

これは単なるスタンドアロンの動的データページでは不可能ですか?完全に足場を張ったシステム内では、明らかに正常に機能します。それとも、私は(うまくいけば)何かを見逃していますか?ありがとうございました。

Test.aspxという

<%@ Page Title="" Language="VB" MasterPageFile="~/Master/Site.master" AutoEventWireup="false" CodeFile="Test.aspx.vb" Inherits="Test" %> 
<asp:Content ID="Content3" ContentPlaceHolderID="BodyContent" Runat="Server"> 

<asp:ListView ID="ListView1" runat="server" DataSourceID="theDataSource" DataKeyNames="ProductID"> 
    <ItemTemplate> 
     <tr> 
      <td> 
       <asp:DynamicControl runat="server" DataField="ProductID" Mode="Edit" /> 
      </td> 
      <td> 
       <asp:DynamicControl runat="server" DataField="ProductName" Mode="Edit" /> 
      </td> 
      <td> 
       <asp:DynamicControl runat="server" DataField="Supplier" Mode="Edit" /> 
      </td> 
      <td> 
       <asp:DynamicControl runat="server" DataField="UnitPrice" Mode="Edit" /> 
      </td> 
      <td> 
       <asp:DynamicControl runat="server" DataField="Discontinued" Mode="Edit" /> 
      </td> 
     </tr> 
    </ItemTemplate> 
    <LayoutTemplate> 
     <table runat="server"> 
      <tr runat="server"> 
       <td runat="server"> 
        <table id="itemPlaceholderContainer" runat="server" border="0"> 
         <tr runat="server"> 
          <th runat="server"> 
           ProductID 
          </th> 
          <th runat="server"> 
           ProductName 
          </th> 
          <th runat="server"> 
           Supplier 
          </th> 
          <th runat="server"> 
           UnitPrice 
          </th> 
          <th runat="server"> 
           Discontinued 
          </th> 
         </tr> 
         <tr id="itemPlaceholder" runat="server"> 
         </tr> 
        </table> 
       </td> 
      </tr> 
      <tr runat="server"> 
       <td runat="server"> 
       </td> 
      </tr> 
     </table> 
    </LayoutTemplate> 
</asp:ListView> 

<asp:EntityDataSource ID="theDataSource" runat="server" 
     ConnectionString="name=NorthwindEntities" 
     DefaultContainerName="NorthwindEntities" EnableDelete="True" 
     EnableFlattening="False" EnableInsert="True" EnableUpdate="True" 
     Include="Supplier" 
     EntitySetName="Products"> 
    </asp:EntityDataSource> 
</asp:Content> 

Test.aspx.vb

Imports System.Web.DynamicData 
Imports DAL 

Partial Class Test 
Inherits System.Web.UI.Page 

Protected table As MetaTable 

Protected Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init 
    Listview1.EnableDynamicData(GetType(Product)) 
    table = theDataSource.GetTable() 
    Title = table.DisplayName 
End Sub 
End Class 

答えて

1

問題は解決しました。このすべてが開始されたとき、私は元々エラーメッセージを受け取っていました:

メタテーブルを特定できませんでした。 MetaTableをデータソース 'EntityDataSource1'に指定できませんでした。その1つはリクエストURLから推測できませんでした。テーブルはDATのソースにマップされ、またはされていることを確認し、データ・ソースが有効なコンテキストタイプとテーブル名で構成されていること、または要求がつながったことを追跡しようとすると、登録さDynamicDataRoute

の一部であること私のASPを取り除くに:それはメタテーブルを処分したものの...ことわざのウサギの穴を私を率いてきたことが判明それ

Listview1.EnableDynamicData(GetType(Product)) 
table = theDataSource.GetTable() 

:でDynamicDataManagerマークアップ、およびコードビハインドでそれを置き換えますエラー、それは誤って上記の私が書いた問題を引き起こした。このエラーメッセージは、実際に起因していることを指摘http://daviworld.net/?tag=/DynamicDataManager::への感謝

これは、デザイナコード生成の問題が原因です。 GridViewコントロールのDataSourceを選択すると、ContextTypeName属性がEntityDataSourceControlに追加されません。

私は上記のコードの行を削除し、ASPに再び追加すると:マークアップにDynamicDataManager、その後、EntitiyDataSourceにContextTypeName =「DAL.NorthwindEntities」を追加1がそれを望むと同じように、すべてが機能するようになりましたに。

0

ええ、本当に何を言ったのですか。私が立ち往生したのと同じ場所にいます。私の腹の中に火を置いて柱から走っていますが、すぐに消えるかもしれません。

どうすれば足場の仕組みの外ではうまく動かないのでしょうか。私が実際にやっているのは、dynamicdatamanagerを借りることです。そのため、フレームワークと新しく追加されたフレームワークの両方でテンプレート化できます。

私がこの穴に入ったのは、同じページに複数のエンティティデータを表示しようとするときです。ルールの親指は、単一のエンティティ、単一のページと思われる。どんなものであれ、間違いは今のところ間違いです。私はもう一度ボトルを開ける前にそれをもう数日与えてください。ビールがありますように!