2011-07-15 31 views
0

半時間用在這一個日子......直放站的DataBind錯誤

在一個頁面上,我有這樣的兩個中繼這樣:

<% if (String.IsNullOrEmpty(Request.QueryString["id"])) { %> 

    <asp:Repeater ID="auth_items" runat="server"> 

     <ItemTemplate> 
      <a href="/admin/auth.aspx?action=view&amp;id=<%# Eval("id") %>"><%# Security.script(Eval("name").ToString()) %></a><br /> 
     </ItemTemplate> 

    </asp:Repeater> 

<% } else { %>  

    <asp:Repeater ID="auth_item" runat="server"> 

     <ItemTemplate> 
     <%# Security.script(Eval("name").ToString()) %> 
     </ItemTemplate> 

    </asp:Repeater>  

<% } %> 

並在後面的代碼:

if (String.IsNullOrEmpty(Request.QueryString["id"])) 
    sql = "SELECT * FROM table1 ORDER BY attr1 DESC"; 
else 
{ 
    id = Security.sql(Request.QueryString["id"]); 
    sql = "SELECT * FROM table2 WHERE attr2=" + id; 
} 

s.OpenConn(sql); 

if (String.IsNullOrEmpty(Request.QueryString["id"])) 
{ 
    auth_items.DataSource = s.GetRead(); 
    auth_items.DataBind(); 
} 
else 
{ 
    auth_item.DataSource = s.GetRead(); 
    auth_item.DataBind(); 
} 

問題是我在auth_item.DataBind()上得到'對象引用未設置爲對象的實例'。 第一個中繼器正常工作並顯示數據,但第二個中繼器不起作用,相反,會引發錯誤。 我調試它,第二個中繼器的DataSource不爲空,並且sql返回一個值。

什麼似乎是問題?

謝謝!

回答

0

table2沒有名稱列?

+0

它的確如此。兩張表都有他們的專欄。 我認爲這個錯誤會有所不同。 – lopkiju

+1

所以它包含空值。您在頁面上調用ToString()方法時發生異常。 –

+0

這是一個簡單的例子。 原來的一個有點複雜,所以最後一個在數據庫中是空的,第一個有一個值,我得到的第一個錯誤,所以它混淆了我。無論如何,你是對的。我只留下了評估,現在工作。 謝謝! – lopkiju