jQuery& ASP.NET - 将$ .click()绑定到gridview.Template控件

时间:2011-05-13 15:40:55

标签: jquery asp.net

我有一个Gridview,其中包含此超链接的模板:

        <asp:TemplateField HeaderText="Notes" ItemStyle-CssClass="NoMargin NoPadding" SortExpression="lineNotes">
            <ItemTemplate>
                <asp:HyperLink id="notesHl" runat="server" text='<%# Bind("lineNotes") %>' Font-Underline="true" Font-Bold="true"></asp:HyperLink>
            </ItemTemplate>
            <ItemStyle Font-Size="Smaller" Height="10px" Width="10px" Wrap="True" />
        </asp:TemplateField>

然后jQuery创建一个由Popup();

调用的模态对话框
    $(document).ready(function () {
        // increase the default animation speed to exaggerate the effect
        $.fx.speeds._default = 1000;
        $(function () {
            $("#divLineItemComments").dialog({
                autoOpen: false,
                show: "blind",
                hide: "explode",
            width: 900,
            height: 500
            });
        });

        $("#_ctl0_ContentPlaceHolder1_cwgPhysical__ctl3_notesHl").click(function () {
            $("#divLineItemComments").dialog("open");
            return false;
        });
    });

    function Popup() {
        $("#divLineItemComments").dialog("open");
        return false;                       
    }

为了测试,我在gridview中硬编码了第一个链接的生成名称:

_ctl0_ContentPlaceHolder1_cwgPhysical__ctl3_notesHl

因为ASP.NET动态生成id,所以我需要动态绑定超链接的click事件。这样它就可以使用ASP.NET使用的命名。我可以硬编码到XX生成的名称(并希望它们始终生成相同的名称)。这似乎是一个可怕的解决方案......

如何让jQuery将我的Clicks绑定到我的超链接?

挂钩到rowbound可能会有效,但我不知道如何在这里绑定jQuery

protected void cwgPhysical_RowDataBound(object sender, GridViewRowEventArgs e)
{
  Hyperlink.NavigateUrl = "javascript:Popup();";//this might work somehow...
}

1 个答案:

答案 0 :(得分:1)

您可以使用相当低技术的解决方案来解决这个问题:只需创建一个虚拟cssClass并将其应用于生成的所有超链接。然后你有一个非常简单的选择器:

$('.myDummyCssClass').click(...);