Repeater DataBind错误

时间:2011-07-15 23:10:49

标签: c# asp.net

花了半天时间......

在一个页面上,我有两个这样的中继器:

<% 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不为null,sql返回一个值。

什么似乎是问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

table2没有名称列?