CallendarExtender不是一个已知的元素

时间:2013-03-13 11:44:07

标签: asp.net calendarextender

我有两个页面使用相同代码的'UpdatePanel,ScriptManager和CalendarExtender , in one of them, the CalendarExtender`工作正常,但另一方面,它给了我这个错误:

CalendarExtender is not a known Element

这是aspx

上的代码
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolKit" TagPrefix="asp" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
   <div id="conteudo" style="text-align: left">                    
        <fieldset id="fieldset" style="width:730px; margin-left: -200px">
        <legend style="text-align:center;"><b>Detalhes do Chamado</b></legend>                                   
        <div id="DetalhesChamado">
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="true" EnableScriptLocalization="true" EnablePartialRendering="true"></asp:ScriptManager>
         <asp:UpdatePanel ID="UpdatePanel1" runat="server">
         <ContentTemplate>
            //Here is a gridview  
            <asp:CalendarExtender runat="server"></asp:CalendarExtender>

但仍然给出错误......

- 更新2--

现在我收到了这个错误:
 The TargetControlID of 'CalendarExtender1' is not valid. A control with ID 'TxtPrevisao' could not be found.

我的新代码:

<asp:TemplateField>
    <ItemTemplate>
        <asp:TextBox ID="TxtPrevisao" runat="server" Width="115px"></asp:TextBox>
        <asp:CalendarExtender ID="CalendarExtender1" runat="server" Format=" dd ,MMMM ,yyyy" TargetControlID="TxtPrevisao" PopupButtonID="TxtPrevisao" CssClass="MyCalendar">
        </asp:CalendarExtender>
     </ItemTemplate>
</asp:TemplateField>

2 个答案:

答案 0 :(得分:3)

更改Ajax-Kit的Tag-Prefix,看看它是否有效

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="act" %>

还有:

<act:CalendarExtender runat="server"></act:CalendarExtender>

asp用于Asp.Net组件,如UpdatePanel

------------更新2 -------------------

对于新的错误,您无法将PopupButtonID分配给文本框,您需要一个ImageButton

<asp:ImageButton ID="btnCalenderPopup" runat="server" ImageUrl="App_Themes/Standard/Img/calendar.png" CausesValidation="False" />

仍然,我坚持认为,你需要正确地为Took-Kit分配Tag-Prefix,你需要正确引用装配,因为SanjeevRai说

答案 1 :(得分:1)

您必须在项目中添加“Ajaxtoolkit”dll的引用。看起来它没有得到'AjaxToolkit'DLL的正确引用。

您可以通过右键单击网站并选择“属性页”选项来检查项目的引用。然后它会告诉你所有的参考资料。从这里你可以检查你的项目中是否有“Ajaxtoolkit”引用退出。

如果您的项目中不存在Ajaxtoolkit引用,那么您必须先添加此引用!

------------更新2 -------------------

在查看您的代码后,我遇到了问题。

实际上你在gridview中使用了calenderextender及其TargetControlID文本框,因此它没有得到textbox的id。它永远不会直接在aspx页面上识别子控件ID。 你需要在gridview的RowDataBound事件中运行时附加'TargetControlID'和'PopupButtonID'。

以下是您可以在aspx.cs文件中使用的代码示例:

void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        TextBox txt = (TextBox)e.Row.FindControl("TxtPrevisao");
        CalendarExtender Calendar1 = (CalendarExtender)e.Row.FindControl("CalendarExtender1");
        Calendar1.TargetControlID=txt.ID;
        Calendar1.PopupButtonID=txt.ID;
    }
}

在.aspx页面中,将rowdatabound事件附加到网格,并从calenderextender中删除'TargetControlID'和'PopupButtonID'属性,即

<asp:TemplateField>
    <ItemTemplate>
        <asp:TextBox ID="TxtPrevisao" runat="server" Width="115px"></asp:TextBox>
        <asp:CalendarExtender ID="CalendarExtender1" runat="server" Format=" dd ,MMMM ,yyyy" CssClass="MyCalendar">
        </asp:CalendarExtender>
     </ItemTemplate>
</asp:TemplateField>