2012-06-05 16 views
0

我正在使用這篇文章作爲做我的兩個表'評論''CommentOtherAuthor'的嵌套數據綁定:http://support.microsoft.com/kb/306154。一個評論可能有很多作者。我的代碼是在這裏:ASP.NET數據集添加關係空引用異常

.ASPX:

<asp:Repeater ID="rptComments" runat="server"> 
    <ItemTemplate> 
      <div class="comment-data"> 
       <h3 class="item">Submitted to <%# GetPageDetails(Eval("nodeid")) %> article on <%# Eval("created") %></strong></h3> 
       <p class="item"><strong>Name</strong> <%# Eval("firstname") %> <%# Eval("surname") %></p> 
       <p class="item"><strong>Occupation</strong> <%# Eval("occupation") %></p> 
       <p class="item"><strong>Affiliation</strong> <%# Eval("affiliation") %></p> 
       <p class="item"><strong>Email</strong> <a href='mailto:<%# Eval("email") %>'><%# Eval("email") %></a> <em>Publish email: <%# Eval("publishemail") %></em></p> 
       <p class="item"><strong>Competing interests?</strong> <%# Eval("competingintereststext") %>&nbsp;</p> 
       <p class="item"><strong>eLetter title</strong> <%# Eval("title") %></p> 
       <p><%# Eval("comment").ToString().Replace("\n", "<br/>")%></p> 

       <div class="additional-authors"> 
        <h3>Additional authors</h3> 
        <asp:Repeater id="rptAdditionalAuthors" runat="server" datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %>' > 
         <ItemTemplate> 
          <%# DataBinder.Eval(Container.DataItem, "[\"firstname\"]")%><br>  
         </ItemTemplate> 
        </asp:Repeater> 
       </div> 
      </div> 
    </ItemTemplate> 
</asp:Repeater> 

代碼隱藏:

private void BindData() 
    { 

     SqlConnection cnn = new SqlConnection(GlobalSettings.DbDSN); 
     SqlDataAdapter cmd1 = new SqlDataAdapter(string.Format("select * from Comment {0} order by created desc", Filter), cnn); 

     //Create and fill the DataSet. 
     DataSet ds = new DataSet(); 
     cmd1.Fill(ds, "comments"); 

     //Create a second DataAdapter for the additional authors table. 
     SqlDataAdapter cmd2 = new SqlDataAdapter("select * from CommentOtherAuthor", cnn); 
     cmd2.Fill(ds, "additionalAuthors"); 

     //Create the relation between the comments and additional authors tables. 
     ds.Relations.Add(
      "myrelation", 
      ds.Tables["Comment"].Columns["id"], 
      ds.Tables["CommentOtherAuthor"].Columns["commentid"] 
     ); 

     //Bind the Authors table to the parent Repeater control, and call DataBind. 
     rptComments.DataSource = ds.Tables["additionalAuthors"]; 
     rptComments.DataBind(); 
    } 

但是,運行這個時候拋出一個System.NullReferenceException上線ds.Relations.Add(

我真的不確定從哪裏開始解決這個問題,因爲我在這裏深入瞭解自己的深度。

任何人都可以建議如何讓這個工作?

謝謝。

回答

0

Got it!沒有實際的外鍵約束連接表。有了這個,現在這個工作。