具有事件处理程序的动态控件

时间:2019-05-31 10:06:30

标签: asp.net user-controls textchanged

由于要动态评估结构,我想以表单形式动态添加ASP.NET元素(例如TextBox)。

protected UCLabelTextbox generateLabelTextbox ()
var ctrl = (UCLabelTextbox) Page.LoadControl 
("UserControls/UCLabelTextbox.ascx");

var value = (TextBox) ctrl.FindControl ("value");
value.ID = "EdtLength"; 
value.Attributes.Add ("type", "number");
value.Attributes.Add ("min", "50");
value.Attributes.Add ("max", "100");
value.TextChanged += EventTextChanged;
/*
var js = "onValueChanged (this.value, " 50, 100);";
value.Attributes.Add ("onchange", js);
*/
return ctrl;

在创建某些事件时应调用TextBox,以检查输入或执行进一步的操作(重新计算)。

UCLabelTExtbox.ascx

<div class="table-row">
<asp:TextBox runat="server" ID="value" 
OnTextChanged="EventTextChanged"/>
</div>

UCLabelTExtbox.ascx.cs

public partial class UCLabelTextbox : UserControl
{
    protected void Page_Load (object sender, EventArgs e)
    {
        value.TextChanged += EventTextChanged;
    }

    public void EventTextChanged (object sender, EventArgs e)
    {
        var tb = sender as TextBox;
        if (tb != null)
        {
            // do something
        }
    }
}

但是该事件从未被调用。

我不会定义包含不同元素的动态列表。如果存在TextBox或DropDownList,我将不会调用任何其他方法来检查或启动另一个方法。

0 个答案:

没有答案