2013-03-13 116 views
1

我有两页与'UpdatePanel,ScriptManager的和CalendarExtender , in one of them, the CalendarExtender`工作正常相同的代码,但在另一方面,它给我这个错误:CallendarExtender不是已知元素

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> 

但仍然给错误代码......

--update 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> 
+0

更新我的回答 – 2013-03-13 14:57:30

回答

3

更改的Ajax工具包的标签前缀的看它的工作

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

而且也:

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

asp用于Asp.Net组件,如UpdatePanel

------------ Update 2 ----------------- -

到新的错误,你不能分配PopupButtonID到文本框,你需要的ImageButton

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

不过,我坚持,你将需要指定标签前缀的接过 - 正确安装,您需要按照SanjeevRai所说的正确引用程序集

+0

我会尽力,但正如我所说,在其他页面,使用相同的代码,它的工作是完美的......它会是什么? – Ghaleon 2013-03-13 12:26:04

+0

错误发生后,您尝试过吗? – 2013-03-13 12:49:36

+0

现在我得到'没有找到汇编'AjaxToolkit'你错过了一个程序集...'omg我越来越疯了为什么只在这个页面上它不工作 – Ghaleon 2013-03-13 12:57:08

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页面从calenderextender即附加RowDataBound事件电网和删除“的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> 
+0

我加了,仍然没有任何反应,但什么是正确的顺序'scriptManager,updatepanel'?根据我写的顺序,它会引发错误... – Ghaleon 2013-03-13 12:24:32

相关问题