【问题标题】:Dynamic TextBox TextChanged is not firing in UpdatePanel动态文本框 TextChanged 未在 UpdatePanel 中触发
【发布时间】:2020-02-01 13:27:37
【问题描述】:

我的动态文本框 TextChanged 事件在不使用 UpdatePanel 的情况下正常工作,但是当我使用 UpdatePanel 时它停止工作。它仅在单击 Button 和单击 LinkBut​​ton 时起作用。

如何将动态文本框的 TextChanged 事件设置为 UpdatePanel 的触发器。我希望这对你来说很清楚。

这是我的aspx

    <form id="form1" runat="server" enctype="multipart/form-data">
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Label ID="Label1" runat="server" Text="Name :"></asp:Label>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <br />
            <asp:Label ID="Label2" runat="server" Text="Age :"></asp:Label>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            <br />
            <asp:Label ID="Label3" runat="server" Text="Phones :"></asp:Label>
            <br />
            <asp:Panel ID="pnlTextBox" runat="server">
            </asp:Panel>
            <asp:LinkButton ID="btnAddTxt" runat="server" OnClick="btnAddTxt_Click">Add TextBox</asp:LinkButton>
            <br />
            <br />
            <asp:Button ID="Button1" runat="server" Text="save" OnClick="Button1_Click" />
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="Button1" />
        </Triggers>
    </asp:UpdatePanel>
</form>

这是后面的代码

    protected void Page_PreInit(object sender, EventArgs e)
    {
        //Recreate Controls
        RecreateControls("txtDynamic", "TextBox");
    }
    protected void btnAddTxt_Click(object sender, EventArgs e)
    {
        int cnt = FindOccurence("txtDynamic");
        CreateTextBox("txtDynamic-" + Convert.ToString(cnt + 1));
    }
    private int FindOccurence(string substr)
    {
        string reqstr = Request.Form.ToString();
        return ((reqstr.Length - reqstr.Replace(substr, "").Length) / substr.Length);
    }
    private void RecreateControls(string ctrlPrefix, string ctrlType)
    {
        string[] ctrls = Request.Form.ToString().Split('&');
        int cnt = FindOccurence(ctrlPrefix);
        if (cnt > 0)
        {
            for (int k = 1; k <= cnt; k++)
            {
                for (int i = 0; i < ctrls.Length; i++)
                {
                    if (ctrls[i].Contains(ctrlPrefix + "-" + k.ToString()) && !ctrls[i].Contains("EVENTTARGET"))
                    {
                        string ctrlID = ctrls[i].Split('=')[0];
                        if (ctrlType == "TextBox")
                        {
                            CreateTextBox(ctrlID);
                        }
                        break;
                    }
                }
            }
        }
    }
    private void CreateTextBox(string ID)
    {
        TextBox txt = new TextBox();
        txt.ID = ID;
        txt.AutoPostBack = true;
        txt.TextChanged += new EventHandler(OnTextChanged);
        pnlTextBox.Controls.Add(txt);
        Literal lt = new Literal();
        lt.Text = "<br /><br />";
        pnlTextBox.Controls.Add(lt);
    }
    protected void OnTextChanged(object sender, EventArgs e)
    {
        TextBox txt = (TextBox)sender;
        string ID = txt.ID;
        //Place the functionality here
        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ID + " fired OnTextChanged event')", true);
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        TextBox txtDynamic1 = (TextBox)this.form1.FindControl("txtDynamic-1");
        TextBox txtDynamic2 = (TextBox)this.form1.FindControl("txtDynamic-2");
        Response.Write(txtDynamic1.Text + " & " + txtDynamic2.Text);
    }

【问题讨论】:

    标签: c# asp.net webforms updatepanel scriptmanager


    【解决方案1】:

    您可以参考此 URL 并从后面的代码而不是 aspx 添加回发触发器。 https://forums.asp.net/t/1124967.aspx?Adding+a+Trigger+to+an+UpdatePanel+in+code+behind

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      相关资源
      最近更新 更多