我有一个带有pdf缩略图的ListView创建OnItemDataBound。每个缩略图都有一个复选框,用于选择我要上传的页面。一切都很好 - 到目前为止。现在我做了另一个复选框来选择问题所在的所有页面:如果我选中复选框,ListView中的所有预览缩略图都会消失
这是我的ListView:
<asp:ListView ID="pdfPagesListView" runat="server" OnItemDataBound="pdfPagesListView_ItemDataBound">
<ItemTemplate>
<div id="pdfFrameDiv" runat="server" class="pdfPage"><%# Container.DataItem %>
<div style="position:absolute;">
<asp:Image ID="pdfPreviewImage" runat="server" />
</div>
<div style="position:relative;height:188px;background-color:rgb(240,240,240)">
<asp:Panel ID="thumbnails" runat="server" />
</div>
<div style="position:relative; top:-14px; left:120px;">
<asp:CheckBox ID="selectPdfPageCheckbox" runat="server" />
</div>
</div>
</ItemTemplate>
</asp:ListView>
这是我的CheckBox
<asp:checkbox ID="selectAllPages" runat="server" AutoPostBack="true" OnCheckedChanged="selectAllPdfPages" />
这是ListView的OnItemDataBound代码:
protected void pdfPagesListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
if (byteArray.Length < 25000000)
{
ListViewDataItem dataItem = (ListViewDataItem)e.Item;
int i = dataItem.DisplayIndex;
if (Session["computedPages"] != null)
{
int[] computedPages = (int[])Session["computedPages"];
if (computedPages[i] == 1)
{
dataItem.Visible = false;
}
}
try
{
Panel thumbnailPanel = (Panel)e.Item.FindControl("thumbnails");
Thumbnail thumbnail = new Thumbnail();
thumbnail.SessionKey = unique;
thumbnail.Index = i + 1;
thumbnail.DPI = 17;
thumbnail.Width = 200;
thumbnailPanel.Controls.Add(thumbnail);
Image pdfPreviewImage = (Image)e.Item.FindControl("pdfPreviewImage");
pdfPreviewImage.Visible = false;
}
catch (Exception ex)
{
Image pdfPreviewImage = (Image)e.Item.FindControl("pdfPreviewImage");
pdfPreviewImage.ImageUrl = "~/img/pdfPreview.jpg";
}
}
else
{
Image pdfPreviewImage = (Image)e.Item.FindControl("pdfPreviewImage");
pdfPreviewImage.ImageUrl = "~/img/pdfPreview.jpg";
}
}
}
这是我检查/取消选中复选框事件的代码:
protected void selectAllPdfPages(object sender, EventArgs e)
{
if (selectAllPages.Checked == true)
{
foreach (ListViewDataItem item in pdfPagesListView.Items)
{
CheckBox cb = (CheckBox)(item.FindControl("selectPdfPageCheckbox"));
cb.Checked = true;
}
}
else
{
foreach (ListViewDataItem item in pdfPagesListView.Items)
{
CheckBox cb = (CheckBox)(item.FindControl("selectPdfPageCheckbox"));
cb.Checked = false;
}
}
}
这是OnItemDataBound事件后我的页面的样子:
检查selectAllPages复选框后的显示方式:
我想检查/取消选中所有复选框,而不会丢失所有缩略图预览。我希望有人可以帮助我...
提前致谢
答案 0 :(得分:2)
为什么不想在客户端使用jQuery创建它?这样您就可以选中/取消选中复选框,而无需在每次点击时将网络表单发送到服务器,这意味着您不会丢失任何缩略图,如您所说。
答案 1 :(得分:0)
我认为您还没有在page_load
绑定数据源 protected void Page_Load(object sender, EventArgs e)
{
pdfPagesListView.DataSource="";
pdfPagesListView.DataBind();
}
在这种情况下,您需要在Listview的DataBound事件中检查您的selectAllPages是否已选中。
由于