2009-12-12 53 views
0

我的數據庫中有3個表。
我使用「AccountAccessRight」表作爲聯結表實現了N-N關係。
因此,「Account」表與「AccountAccessRight」具有1-N關係,「AccountAccessRight」與「NextOfKin」表具有N-1關係。
我想列出每個賬戶和列表每個賬戶的每個NextOfKins在「Repeater1」中。
這裏是DB圖: alt text http://sites.google.com/site/mahdiahmadirad/download-1/2009-12-12_032800.png?attredirects=03使用LINQtoSQL實現N-N關係的嵌套中繼器

所以我寫了這個代碼:

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1"> 
     <HeaderTemplate> 
     </HeaderTemplate> 
     <ItemTemplate> 
      <div style="clear: both;"> 
       <img style="float: right;" alt="" src="./img/account.png" /> 
       <a href='<%# Eval("AccountUrl")%>'> 
        <%# Eval("AccountTitle")%> 
       </a> 
       <br /> 
       <span>نام کاربري:</span><%# Eval("AccountUsername")%><br /> 
       <asp:Repeater ID="Repeater2" DataSource="<%# ((aspnet_AccountTable)(Container.DataItem)).aspnet_AccountAccessRights %>" 
        runat="server"> 
        <ItemTemplate> 
         <asp:Repeater ID="Repeater3" DataSource="<%# ((aspnet_AccountAccessRight)(Container.DataItem)).aspnet_NextOfKinTable %>" 
          runat="server"> 
          <HeaderTemplate> 
           <hr /> 
          </HeaderTemplate> 
          <ItemTemplate> 
           <span>وارث يا وارثان:</span> 
           <div> 
            <a href='<%# Eval("NoKId","./FullInfo.aspx?Mode=view&nok={0}")%>'> 
             <%# Eval("Firstname")%> 
             <%# Eval("Lastname")%> 
            </a>, 
           </div> 
          </ItemTemplate> 
          <FooterTemplate> 
           <hr /> 
          </FooterTemplate> 
         </asp:Repeater> 
        </ItemTemplate> 
       </asp:Repeater> 
       <%--<span>وارث(ان) حساب:</span><%# Eval("Relationship")%><br />--%> 
       <%--<span>نام وارث:</span><%# Eval("FirstName") %>&nbsp;<%# Eval("LastName") %>--%> 
      </div> 
     </ItemTemplate> 
    </asp:Repeater> 

看repeater2和3的DataSource!
Commander Repeater3中存在異常。
注意, 「objectdatasource1」 只是項目的所有aspnet_accountTable:

... 
from acc in db.aspnet_AccountTable 
select acc; 
... 

你能幫助我?

新增: 這裏到處是例外產品詳情:

System.ArgumentException was unhandled by user code 
    Message="An invalid data source is being used for Repeater3. A valid data source must implement either IListSource or IEnumerable." 
    Source="System.Web" 
    StackTrace: 
     at System.Web.UI.WebControls.Repeater.set_DataSource(Object value) 
     at ASP.user_accounts_default_aspx.__DataBinding__control9(Object sender, EventArgs e) in g:\MyProjects\ASP.net Projects\After Dyeing\WebSite\User\Accounts\Default.aspx:line 30 
     at System.Web.UI.Control.OnDataBinding(EventArgs e) 
     at System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) 
     at System.Web.UI.WebControls.Repeater.DataBind() 
     at System.Web.UI.Control.DataBindChildren() 
    InnerException: 
+0

什麼是例外(英文,如果你還跟分組翻譯它)? – 2009-12-12 03:56:37

+0

我將異常細節粘貼到我的Q. – mahdiahmadirad 2009-12-12 16:05:55

回答

1

我得到了同樣的異常,同時結合我使用LINQ GROUP BY數據嵌套中繼器。我已經解決了這個問題,通過設置匿名類型的屬性,並在綁定嵌套中繼器的過程中獲取相應的數據源。

我猜下面2行代碼會幫助你。

FYI lstGroups =名單,其中集團擁有2個屬性[SITEURL,組名] 我想顯示這些羣體通過SITEURL

//data source for Parent Repeater 
var Result = lstGroups.OrderBy(o => o.GroupName).GroupBy(d => d.SiteUrl).Select(s => new { SiteUrl = s.Key, Groups= s }); 

//On Item Data Bound of Parent Repeater, Bind child repeater 

var obj = DataBinder.Eval(e.Item.DataItem, "Groups"); 

rptChild.DataSource = obj; 

rptChild.DataBind();