我有一个ListView显示事件预订。如果有可用的时间段,我想使该数据项旁边的预订按钮可见。我尝试在OnItemCreated和OnItemDataBound事件处理程序中都这样做,但无济于事。
在这种特定情况下,有四个结果,并且所有结果都可用。但是,该按钮仅出现在最后结果旁边。就像某些东西被覆盖了。我尝试将ID属性在每次循环中设置为不同的值,但在运行时失败。
我还尝试通过将按钮在标记中的可见性最初设置为false来翻转逻辑-将出现三个按钮,最后一个数据项旁边没有按钮。
我最初尝试将Button控件存储在ViewState中,但出现“无法序列化”错误。因此,我切换为以Session状态存储对象。
有人可以指出我正确的方向吗?
<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;
}
}
答案 0 :(得分:0)
为了他人的利益,我能够按以下方式解决此问题:
forEach