У меня есть ListView, который отображает бронирования событий. Если есть свободный временной интервал, я хочу, чтобы рядом с этим элементом данных была видна кнопка бронирования. Я пытался сделать это в обработчиках событий OnItemCreated и OnItemDataBound, но безрезультатно.
В этом конкретном сценарии есть четыре результата, и все они доступны. Однако кнопка появляется только рядом с последним результатом. Это как что-то перезаписывается. Я попытался установить для свойства ID что-то свое в каждом цикле цикла, но это не удалось во время выполнения.
Я также попытался переключить логику, установив видимость кнопки на «ложь» в разметке изначально - появятся три кнопки и ни одной кнопки рядом с последним элементом данных.
Первоначально я пытался сохранить элемент управления Button в ViewState и получил ошибку «not serializable». Поэтому я перешел на хранение объекта в состоянии сеанса.
Может ли кто-нибудь указать мне правильное направление?
<ItemTemplate>
...
<asp:Button ID="reserveButton" Text="Book Now" Visible="false"
OnClick="ReserveButton_Click" runat="server" />
</ItemTemplate>
// After the DataBind() method in the search button handler
...
int rowCount = resultsDS.Tables[0].Rows.Count;
for (int i = 0; i < rowCount; i++)
{
if (resultsDS.Tables[0].Rows[i]["Available"].ToString().Contains("Available Time Slots"))
{
reserveButton = Session["ReserveButton"] as Button;
reserveButton.Visible = true;
}
}
...
protected void ResultsList_ItemCreated(object sender, ListViewItemEventArgs e)
{
if (e.Item is ListViewItem)
{
reserveButton = e.Item.FindControl("reserveButton") as Button;
Session["ReserveButton"] = reserveButton;
}
}