Half a day spent on this one…
On a page, I have two repeaters like so:
<% if (String.IsNullOrEmpty(Request.QueryString["id"])) { %>
<asp:Repeater ID="auth_items" runat="server">
<ItemTemplate>
<a href="/admin/auth.aspx?action=view&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>
<% } %>
and in code behind:
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();
}
The problem is that I get ‘object reference not set to an instance of an object’ on auth_item.DataBind().
First repeater works fine and displays the data, but the second one won’t work and instead, throws me an error.
I debugged it and DataSource for the second repeater is not null, and sql returns a value.
What seems to be the problem?
Thank you!
table2 doesn’t have a name column?