Я заново создал вышеуказанный код на моей стороне, и он отлично работает.Поскольку вы не предоставили источник для Списка данных, я твердо убежден, что проблема заключается в том, что вы неправильно связываете данные в Списке данных.
Вот пример того, как это можно сделать:
<asp:DataList ID="DataList1" runat="server">
<HeaderTemplate>
<table>
<tr>
<td>
ProductID
</td>
<td>
CategoryID
</td>
<td>
ProductName
</td>
<td>
Price
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table>
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "ProductID")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "CategoryID")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "ProductName")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "Price")%>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
Кроме того, вот статья MSDN DataList . Здесь вы можете найти хороший пример того, как связать данные с DataList.
Простопримечание Есть ли какая-то конкретная причина, по которой вы пытаетесь привязать к DataaList?Код в вашем вопросе может быть легко привязан к сетке:
Web.config
<connectionStrings>
<add name="conn" connectionString="your connection string"/>
</connectionStrings>
Источник
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
Код позади
private void ShowPossiblePurchases(string categoryName)
{
if (!String.IsNullOrEmpty(categoryName))
{
try
{
string connString = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
SqlConnection connection = new SqlConnection(connString);
string commandText = "SELECT TOP 2 * FROM Menu WHERE CategoryName=@CategoryName ORDER BY NEWID()";
using (connection)
{
using (SqlCommand command = new SqlCommand(commandText, connection))
{
command.Parameters.AddWithValue("@CategoryName", categoryName);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable table = new DataTable();
adapter.Fill(table);
GridView1.DataSource = table;
GridView1.DataBind();
}
}
connection.Close();
}
catch (Exception ex)
{
Label lblError = (Label)Page.FindControl("lblError");
lblError.Text = ex.Message;
}
}
}