MaskedEditExtender在Asp.Net中从gridview的第二行开始不工作
我的页面上有一个gridview,共有三列,一列用于数量,我需要将MaskedItemXtender与simple TextBox一起使用,但它仅在第一行工作,从第二行开始,TextBox将显示为无掩码 这是我的密码:MaskedEditExtender在Asp.Net中从gridview的第二行开始不工作,asp.net,gridview,ajaxcontroltoolkit,maskedinput,Asp.net,Gridview,Ajaxcontroltoolkit,Maskedinput,我的页面上有一个gridview,共有三列,一列用于数量,我需要将MaskedItemXtender与simple TextBox一起使用,但它仅在第一行工作,从第二行开始,TextBox将显示为无掩码 这是我的密码: <Columns> <asp:TemplateField HeaderText="Qty"> <ItemTemplate> <asp:TextBox ID="txt
<Columns>
<asp:TemplateField HeaderText="Qty">
<ItemTemplate>
<asp:TextBox ID="txtQuan" runat="server" ValidationGroup="MKE" MaxLength="5"
style="text-align:right" width="100px" Text='<%# BIND("QUAN") %>' />
<ajaxToolkit:MaskedEditExtender ID="txtQuan_MaskedEditExtender" runat="server"
Enabled="True" Mask="99999" TargetControlID="txtQuan" />
</ItemTemplate>
</asp:TemplateField>
原因是,当Gridview渲染行时,每行都包含具有不同自动生成id的文本框,并且在MaskedItemXtender的TargetControlID属性中为您指定了一个固定名称。因此,您需要使用RowDataBound事件将MaskedItemXtender放在每个文本框中….请提供此txt的示例。ClientID为每行返回相同的值,它不起作用。然后文本框ClientMode=“AutoID”txt.ClientID中的此属性为每行返回相同的值,它不起作用。然后在文本框中添加此属性:clientMode=“AutoID”[NullReferenceException:对象引用未设置为对象的实例。]AjaxControlToolkit.MaskedEditExtender.OnLoad(EventArgs e)+99 System.Web.UI.Control.LoadRecursive()+74……请替换mxt.TargetControlID=txt.ClientID;使用mxt.TargetControlID=txt.ID;让我们
using AjaxControlToolkit; protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox txt = (TextBox)e.Row.FindControl("txtQuan");
MaskedEditExtender mxt = (MaskedEditExtender)e.Row.FindControl("MaskedEditExtender1");
mxt.TargetControlID = txt.ID;
}
}