为什么我的jQuery模态弹出窗口不会显示?

时间:2014-05-06 22:08:42

标签: c# javascript jquery asp.net jquery-ui-dialog

我在asp:DataGrid中使用asp:Panel而不是div标签(不确定它是否重要),以便我可以创建链接到页面加载时绑定到DataGrid的特定数据的模式弹出窗口

的JavaScript / jQuery的:

function ShowCommentPanel(caller) {
    $("div[id*='pnlComment'][GroupCoveragePeriodId='" + $(caller).attr("GroupCoveragePeriodId") + "']").dialog({
        width: 350,
        height: 200
    });
}

ASP.NET标记:

<asp:TemplateColumn HeaderText="Comment">
     <HeaderStyle HorizontalAlign="Center" Width="90px" CssClass="ColorBackground SubHeaderText" />
     <ItemStyle HorizontalAlign="Center" Width="90px" CssClass="DataGridBorder Font11px" />
     <ItemTemplate>
          <div>
               <asp:HyperLink ID="lnkComment" runat="server" CssClass="IconEdit" ToolTip="Add/Edit" />
          </div>
          <asp:Panel ID="pnlComment" runat="server" title="Comment" style="display: none;">
                <asp:TextBox ID="txtComment" runat="server" TextMode="MultiLine" Width="300px" Height="100px" />
          </asp:Panel>
     </ItemTemplate>
</asp:TemplateColumn>

C#Server Code-Behind(在ItemDataBound处理程序内):

lnkComment.Attributes.Add("GroupCoveragePeriodId", period.GroupCoveragePeriodId.ToString());
                lnkComment.Attributes.Add("onclick", "ShowCommentPanel(this)");
                pnlComment.Attributes.Add("SomeId", period.GroupCoveragePeriodId.ToString());
                txtComment.Attributes.Add("GroupCoveragePeriodId", period.GroupCoveragePeriodId.ToString());
                txtComment.Text = period.Comment;

生成的HTML代码截图(来自Firebug): enter image description here

应用程序代码编译正常,页面加载正常,我的JavaScript / jQuery函数被成功调用,我的jQuery选择器不是null,但它仍然没有显示模态。我不知道为什么没有一个模态显示,所以任何可以指出我正确方向的建议都将非常感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

当此属性实际位于div代码上时,您的选择器正在寻找带有GroupCoveragePeriodId的{​​{1}}代码(因为我看不到空格)。

尝试使用div和[id ...:

之间的空格
a

注意:要知道你的选择器是否有东西,检查长度是否> 0:function ShowCommentPanel(caller) { $("div [id*='pnlComment'][GroupCoveragePeriodId='" + $(caller).attr("GroupCoveragePeriodId") + "']").dialog({ width: 350, height: 200 }); }

答案 1 :(得分:0)

这是愚蠢的。在我的ascx控件中调试此问题时,我不知道是否做了太多Ctrl + Zing,但在查看Firefox控制台后,显然我收到一条错误,说.dialog()不是函数。我发誓我添加了对jquery-ui.js文件的引用,但是我必须在过多的Ctrl + Zing后删除它。现在我可以弹出模态了。很抱歉浪费了所有人的时间。