0

OnItemDataBound を作成した pdf サムネイル画像を含む 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>

これは私のチェックボックスです

<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 イベントの後に私のページがどのように見えるかです: 画像1

これは、selectAllPages チェックボックスをオンにした後の外観です。 画像2

すべてのサムネイルプレビューを失うことなく、すべてのチェックボックスをオン/オフにしたい。誰かが私を助けてくれることを願っています...

前もって感謝します

4

2 に答える 2

0

page_load でデータ ソースをバインドしていないと思います

    protected void Page_Load(object sender, EventArgs e)
    { 
      pdfPagesListView.DataSource="";
      pdfPagesListView.DataBind();
    }

その場合、リストビューの DataBound イベントで selectAllPages がチェックされているかどうかを確認する必要があります。

ありがとう

于 2014-10-20T11:19:46.847 に答える