【问题标题】:jQuery-UI confirmation dialog in an ASP.NET DataList controlASP.NET DataList 控件中的 jQuery-UI 确认对话框
【发布时间】:2012-06-14 00:30:45
【问题描述】:

当单击 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/ 那里得到的——它看起来很简单也很有意义,但由于某种原因它对我不起作用。我从来没有得到 jQuery-UI 确认对话框,它只是在我单击按钮时触发按钮的 OnClick 事件。

【问题讨论】:

  • 我给 Mark Mintoff(发布我使用的代码的开发人员)发了电子邮件,他指出我的函数调用(“ConfirmDeleteAttachment”)与函数的名称(“ConfirmDeleteDialog”)不同。多么尴尬!我不知道我在这样一个愚蠢的错误上浪费了多少时间!

标签: jquery asp.net jquery-ui-dialog


【解决方案1】:

答案是让 LinkBut​​ton 的 OnClientClick 事件中的函数调用(“ConfirmDeleteAttachment”)与我正在调用的函数的名称相匹配!这只是一个愚蠢的错字。

此答案归功于开发人员(Mark Mintoff,请参阅他的博客http://markmintoff.com),我使用了他的代码 -- 我给他发了电子邮件,他指出了我的错误。

【讨论】:

    【解决方案2】:

    去掉单引号

    [id$=btnDelAttach]
    

    【讨论】:

    • 我仍然在 alert() 对话框中得到“found undefined”。我还尝试删除 attachID 选择器周围的单引号,例如"a[onclick*=" + attachID + "][id$=btnDelAttach] 但这也没有用。
    • 你能发布一些渲染的 HTML
    • 贴在上面,靠近我的问题的开头。
    猜你喜欢
    • 2010-12-17
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    相关资源
    最近更新 更多