Я работаю над динамическим генерированием некоторых меток с использованием DataList в коде ASP.NET в течение нескольких дней и не могу, на всю жизнь, получить управление для отображения на экране. Я достаточно уверен, что проблема - это небольшая синтаксическая вещь или тег HTML, который я забыл установить. Я подтвердил через отладчик, что список данных, по сути, втягивается в источник данных, и когда я просматриваю представление «дизайн» кода HTML, элемент управления отображается. Однако, когда я запускаю страницу, элемент управления не отображается. Любое понимание того, почему это происходит, очень ценится.Datalist в ASP.NET не будет отображаться?
Ниже приведены коды отношения к вопросу ...
C# частичный класс:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InventoryService service = new InventoryService();
ArrayList foundYears = service.FindYears();
DataSet ds = new DataSet();
ds.Tables.Add("Years");
ds.Tables[0].Columns.Add("Year");
foreach (string yr in foundYears)
{
if (yr != "")
{
DataRow dr = ds.Tables[0].NewRow();
dr["Year"] = yr;
ds.Tables[0].Rows.Add(dr);
}
}
DataList headerRepeater = new DataList();
headerRepeater.DataSource = ds.Tables[0];
headerRepeater.DataKeyField = "Year";
headerRepeater.DataBind();
headerRepeater.Visible = true;
}
}
HTML частичный класс:
<table width="100%" align="center">
<tr>
<td style="width: 868px">
<asp:DataList id='headerRepeater' Runat='server' CellPadding='5' CellSpacing='15' GridLines='Vertical' HorizontalAlign='Left' RepeatColumns='30' RepeatDirection='Horizontal' RepeatLayout='Table' ShowFooter='False' ShowHeader='False' Visible = 'True' CssClass='DataList' DataKeyField ='Year'>
<ItemTemplate>
<asp:Label runat='server' ID='lblItemName' Text='<%# DataBinder.Eval(Container.DataItem, "Year") %>'>
</asp:Label>
</ItemTemplate>
</asp:DataList>
</td>
</tr>
<tr>
Оба замечания были правильными, поэтому я выбрал первый ответ как ответ. Спасибо вам обоим!! – badpanda
DataTables - это ужасающие структуры для работы с вами, вы действительно должны работать, чтобы заменить любое использование DataTable истинными классами, DataTable/DataSet в основном обесценивает весь объектно-ориентированный дизайн. –