1

DataList コントロールの LinkBut​​ton をクリックしたときに jQuery-UI 確認ダイアログが機能するようにしようとしていますが、試したことはありません。DataList は、データベース エントリへの添付ファイルのリストです。

元の .aspx ファイルの関連セクションは次のとおりです。

<ul id="attachmentList">
  <asp:DataList ID="dlAttachments" runat="server" DataKeyField="AttachID" RepeatLayout="Flow">
    <ItemTemplate>
      <li>
        <asp:HyperLink ID="hlViewAttach" runat="server" NavigateUrl='<%# CreateAttachURL(Convert.ToInt32(Eval("AttachID"))) %>'
          Text='<%# Eval("Description").ToString() %>' Target="_blank" />
        <em>(</em><asp:Label ID="lblType" runat="server" Text='<%# GetFriendlyFileType(Eval("FileType").ToString()) %>' Font-Italic="True"></asp:Label>,
        <asp:Label ID="lblSize" runat="server" Text='<%# GetFriendlyFileSize(Convert.ToInt32(Eval("FileSize"))) %>' Font-Italic="True"></asp:Label><em>)</em>
        <asp:LinkButton ID="btnDelAttach" runat="server" OnClick="btnDelAttach_Click"
          OnClientClick="return ConfirmDeleteAttachment(this, 'Please confirm deletion', 'Are you sure you wish to delete this attachment?');">DELETE</asp:LinkButton>
      </ItemTemplate>
    </asp:DataList>
  </ul>

ASP.Net によって生成された上記の HTML は次のとおりです。

<ul id="attachmentList">
<span id="ctl00_mainContent_wizNewIPR_dlAttachments">
  <li><a id="ctl00_mainContent_wizNewIPR_dlAttachments_ctl00_hlViewAttach" href="ViewAttachment.aspx?AttachID=260" target="_blank">Attachment description #1</a>
    <em>(</em><span id="ctl00_mainContent_wizNewIPR_dlAttachments_ctl00_lblType" style="font-style:italic;">Acrobat PDF document</span>,
    <span id="ctl00_mainContent_wizNewIPR_dlAttachments_ctl00_lblSize" style="font-style:italic;">74.61 kB</span><em>)</em>
    <a onclick="return ConfirmDeleteAttachment(this, 'Please confirm deletion', 'Are you sure you wish to delete this attachment?');"
      id="ctl00_mainContent_wizNewIPR_dlAttachments_ctl00_btnDelAttach" href="javascript:__doPostBack('ctl00$mainContent$wizNewIPR$dlAttachments$ctl00$btnDelAttach','')">DELETE</a></li>
</span>
</ul>

私が使用している jQuery 関数は、添付ファイルの削除を確認する単純な [はい/いいえ] ダイアログ ボックスです。Javascript のソースは次のとおりです。

//Confirm Delete Attachment dialog
var delConfirmed = false;
function ConfirmDeleteDialog(obj, title, dialogText) {
  if (!delConfirmed) {
    //add the dialog div to the page
    $('body').append(String.Format("<div id='confirmDeleteDialog' title='{0}'><p>{1}</p></div>", title, dialogText));
    //create the dialog
    $('#confirmDeleteDialog').dialog({
      modal: true,
      resizable: false,
      draggable: false,
      close: function(event, ui) { $('body').find('#confirmDeleteDialog').remove(); },
      buttons:
        {
          'Yes, delete it': function() {
            $(this).dialog('close');
            delConfirmed = true;
            if (obj) obj.click();
          },
          'No, keep it': function() {
            $(this).dialog('close');
          }
        }
      });
    }

    return delConfirmed;
}

これはhttp://markmintoff.com/2011/03/asp-net-jquery-confirm-dialog/から入手しました- とてもシンプルで理にかなっているように見えますが、何らかの理由でうまくいきません。ボタンをクリックすると、ボタンの OnClick イベントがトリガーされるだけです。

4

2 に答える 2

2

答えは、LinkBut​​tonのOnClientClickイベント( "ConfirmDeleteAttachment")で関数呼び出しを、呼び出していた関数の名前と一致させることでした。これはただのばかげたタイプミスでした。

この回答の功績は、私が使用したコードの開発者(Mark Mintoff、http://markmintoff.comの彼のブログを参照)にあります。私は彼に電子メールを送り、彼は私の間違いを指摘しました。

于 2012-06-13T15:23:26.733 に答える
0

一重引用符を削除します

[id$=btnDelAttach]
于 2012-06-11T19:30:12.840 に答える