2

私の最初の投稿で、タイトルに意味があることを願っています。

更新パネルがあり、その中にアップロードをトリガーするボタンのあるファイルアップロードコントロールがあります。その下には、アップロードされたファイルのリストを含むビハインドファイルにデータバインドされたListViewがあります。updatepanelには、アップロードボタンを指す「PostBackTrigger」があります。

これらはすべて、正常に機能します。リストされているアイテムごとに、その特定のファイルを削除するリンクボタンがあります。それも正常に機能しますが、ここに問題があります。ポストバックはトリガーされず、Webを検索した後、答えのスタックオーバーフローは言うまでもなく、さまざまな方法を試しました。私はたくさん試しましたが、最良の解決策が実装されているように見えても、実際には何も起こりません。

ascxファイル(重要な場合はユーザーコントロール):

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
    <asp:Label ID="LabelUploadFile" runat="server" Text="Upload fil:"></asp:Label>
    <br />
    <asp:FileUpload ID="FileUploadDocument" runat="server" />
    <br />
    <asp:DropDownList ID="DropDownListDocumentType" runat="server"></asp:DropDownList>
    <br />
    <asp:Button ID="ButtonUploadFile" runat="server" Text="Upload fil" CssClass="nice small radius action button" onclick="ButtonUploadFile_Click" />
    <br />
    <br />
    <br />
    <asp:ListView ID="ListViewDocuments" runat="server" OnItemCommand="ListViewDocuments_ItemCommand">
        <LayoutTemplate>
            <table border="0" cellpadding="1">
                <tr>
                    <th align="left">Type</th>
                    <th align="left">Dokument</th>
                    <th></th>
                </tr>
                <tr id="itemPlaceholder" runat="server"></tr>
            </table>
        </LayoutTemplate>
        <ItemTemplate>
            <tr>
                <td><asp:Label runat="server" ID="lblName"><%#Eval("Type") %></asp:Label></td>
                <td><asp:Label runat="server" ID="lblType"><%#Eval("Dokument") %></asp:Label></td>
                <td><asp:LinkButton ID="DeleteButton" OnClientClick="return confirm('Slet dokument?');" CommandName="Delete" CommandArgument='<%# Eval("id")%>' runat="server" Text="Slet"></asp:LinkButton></td>
            </tr>
        </ItemTemplate>
        <EmptyDataTemplate>
            <tr>
                <td>&nbsp;</td>
                <td>Du har ikke uploadet filer endnu.</td>
                <td>&nbsp;</td>
            </tr>
        </EmptyDataTemplate>
    </asp:ListView>
</ContentTemplate>
<Triggers>
    <asp:PostBackTrigger ControlID="ButtonUploadFile" />
    <asp:AsyncPostBackTrigger ControlID="ListViewDocuments" EventName="ItemCommand" />
</Triggers>

(asyncpostbacktriggerは、私が試した、削除していない別のソリューションであることに注意してください。また、scriptmanagerが存在し、上記のコードでは表されていません)

背後のファイルからのListViewDocuments_ItemCommand:

protected void ListViewDocuments_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        if (e.CommandName == "Delete")
        {
            //Send the file's ID to the data layer for deletion
            _talentDataAccess.DeleteTalentFileByFileId(Convert.ToInt32(e.CommandArgument));
            //Rebind the listveiw with a new list of files.
            _fillFileList();
        }
    }

だから私が言ったように、技術的にはすべてが機能しますが、要するにリンクボタンはアップデートパネルを更新しません。

他のコードスニペットについて質問や必要がある場合は、すみやかに回答します。

前もって感謝します。

4

1 に答える 1

1

CommandName="Delete"がイベントItemDeletedを発生させている可能性があり、ではItemDeleting ない可能性がありItemCommandます。これが当てはまる場合は言わなければなりませんが、これらのイベントがないためにページがクラッシュすることが予想されます(詳細についてはMSDNを参照してください)。

つまり、コマンドとしてDelete(またはEdit)ワードを使用したときに、問題が見つかりました。だから私は次のことを試してみます

  1. コマンドの名前を。のような名前に変更し CommandName="ItemDelete"ます。ListViewDocuments_ItemCommand火は今ですか
  2. また、問題を引き起こしているのが更新パネルであるかどうかを確認するために、itemコマンドが希望どおりに実行されると確信できるまで、一時的に削除します。

それがいくつかの助けになることを願っています

于 2012-07-04T10:47:37.440 に答える