我在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):
应用程序代码编译正常,页面加载正常,我的JavaScript / jQuery函数被成功调用,我的jQuery选择器不是null,但它仍然没有显示模态。我不知道为什么没有一个模态显示,所以任何可以指出我正确方向的建议都将非常感激。提前谢谢。
答案 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后删除它。现在我可以弹出模态了。很抱歉浪费了所有人的时间。