在asp.net webforms中以编程方式创建控件时,在JavaScript中查找控件

Finding a control in JavaScript when it is programmatically created in asp.net webforms

本文关键字:控件 查找 JavaScript 创建 编程 asp net webforms 方式      更新时间:2023-09-26

我在其中一个页面的后台代码中以编程方式创建了几个控件。谁能给我一个最好的方法来访问他们没有设置ClientIDMode为静态的想法。

当我不以编程方式创建控件时,我只需使用jQuery这样的服务器标签来访问它们:

$('#<%=Label1.ClientID%>')

注意:此处不能使用ClientIDMode = Static。

下面是我如何以编程方式创建控件的示例:

TextBox TextBox1 = new TextBox();
TextBox1.ID = "TextBox1";

您可以使用Jquery选择器的方法。另一种选择是使用css选择器。当你创建动态控件时;为控件的CssClass属性分配唯一的值,并在jQuery端使用它来访问控件。下面是一些非常小的例子:

创建Page_Init事件中的一些示例控件:

protected void Page_Init(object sender, EventArgs e)
{
    TextBox txtBox = new TextBox();
    txtBox.CssClass = "txtBox";
    phControls.Controls.Add(txtBox);
    CheckBox chktBox = new CheckBox();
    chktBox.CssClass = "chktBox";
    phControls.Controls.Add(chktBox);
    DropDownList drpBox = new DropDownList();
    drpBox.CssClass = "drpBox";
    phControls.Controls.Add(drpBox);
}

在设计端,放置一个按钮控件。一个函数在OnClientClick事件上警告控件:

    <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script type="text/javascript">
        function getValues() {
            alert($(".txtBox"));
            alert($(".chktBox"));
            alert($(".drpBox"));
            alert($(".txtBox").val());
            return false;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:PlaceHolder runat="server" ID="phControls" />
        <asp:Button Text="Get Value" runat="server" OnClientClick="return getValues();" />
    </form>
</body>
</html>