我们有条件将TextBoxs动态添加到ASP用户控件,如下所示:
if (conditionIsTrue) {
TextBox textField = new TextBox();
Panel.controls.Add(textField);
}
我想添加一个事件监听器,当用户解开或编辑TextBox时,它会填充TextBox值。
我尝试了以下C#实现,但由于某种原因,侦听器没有处理这些值。
if (conditionIsTrue) {
TextBox textField = new TextBox();
textField.TextChanged += new EventHandler(LeadingZero_Handler);
Panel.controls.Add(textField)
}
public void LeadingZero_Handler(object sender, EventArgs e)
{
int FieldLength = 10;
if((TextBox)sender.Text.Length < FieldLength)
{
(TextBox)sender.Text = (TextBox).sender.Text.PadLeft(FieldLength,'0');
}
}
是否有一种方法可以在ASP控件上用JavaScript实现事件监听器,但是在C#代码中动态生成TextBox期间/之间添加JavaScript监听器属性?
答案 0 :(得分:1)
将此添加到后面的代码中。
textField.AutoPostBack = true;
但是,如果你所做的只是添加一些零填充,而你在LeadingZero_Handler
中没有做任何其他事情,我建议采用前端方法。这样可以省去PostBack。
<script type="text/javascript">
function LeadingZero(element) {
var str = element.value;
var padding = "0000000000";
if (str.length < 10) {
element.value = padding.substring(0, padding.length - str.length) + str;
}
}
</script>
然后将脚本添加到TextBox而不是AutoPostBack和TextChanged处理程序。
textField.Attributes.Add("onblur", "LeadingZero(this)");