我有一个显示活动预订的列表视图。如果有可用的时间段,我希望在该数据项旁边显示预订按钮。我在OnitemCreated和OnitemDataBound事件处理程序中都尝试过这样做,但没有任何效果。
在这个特定的场景中,有四个结果,都是可用的。但是,该按钮仅显示在最后一个结果旁边。好像有什么东西被覆盖了。我尝试在循环的每一轮中将ID属性设置为不同的内容,但在运行时失败。
我还尝试通过在标记中设置按钮的可见性为false来翻转逻辑,最初会出现三个按钮,最后一个数据项旁边没有按钮。
我最初尝试在viewstate中存储按钮控件,但得到了“不可序列化”错误。所以我切换到在会话状态下存储对象。
有人能给我指个方向吗?
<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;
}
}