我的gridview中有一个Masked编辑扩展器。我正在根据类型动态显示这个gridview,如果类型是' T'它只显示文本框,如果类型是' DT'它显示带有日历的文本框。
我使用相同的文本框,并在网格行数据绑定事件中,我隐藏并显示日历按钮。但是如果我在gridview中给出maskededitextender,那么掩码也会应用于nondate字段。
我尝试通过给出一个虚拟文本框并将其作为maskededtextender的targetcontrolid,并在rowdatabound事件中,如果类型是日期,我将maskededitextender的targetcontrolid设置为我的文本框。但它没有用。
有人可以帮我这个吗?
下面是rowdatabound事件代码:
protected void grd_RowDataBound(object sender, GridViewRowEventArgs e)
{
try
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
MaskedEditExtender ME = (MaskedEditExtender)e.Row.FindControl("MaskedEditExtender1");
TextBox txtValue1 = (TextBox)e.Row.FindControl("txtValue1");
TextBox txttest = (TextBox)e.Row.FindControl("txttest");
HiddenField hfInputType = (HiddenField)e.Row.FindControl("hfInputType");
ImageButton imgBtnFromDate = (ImageButton)e.Row.FindControl("imgBtnFromDate");
ME.TargetControlID = txttest.ClientID;
if(hfInputType.Value=="DT")
{
txtValue1.Style.Add(HtmlTextWriterStyle.Display, "block");
imgBtnFromDate.Style.Add(HtmlTextWriterStyle.Display, "block");
ME.TargetControlID = txtValue1.ClientID;
}
else if(hfInputType.Value=="U")
{
txtValue1.Style.Add(HtmlTextWriterStyle.Display, "block");
imgBtnFromDate.Style.Add(HtmlTextWriterStyle.Display, "none");
}
}
}
}
Asp.net代码:
<asp:ImageButton ID="imgBtnFromDate" runat="server" Style="display: none" ImageUrl="~/App_Themes/Black/Images/Calendar.png" />
<cc1:CalendarExtender ID="ceFromDate" PopupButtonID="imgBtnFromDate" runat="server"
TargetControlID="txtValue1">
</cc1:CalendarExtender>
<cc1:MaskedEditExtender ID="MaskedEditExtender1" runat="server" AcceptNegative="Left"
DisplayMoney="Left" Mask="99/99/9999" MaskType="Date" MessageValidatorTip="true"
OnFocusCssClass="MaskedEditFocus" OnInvalidCssClass="MaskedEditError" TargetControlID="txttest"
AutoComplete="true" SkinID="TextBoxWatermarkExtenderSkin" UserDateFormat="MonthDayYear">
</cc1:MaskedEditExtender>