2013-03-13 5 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

Обновлено мой ответ –

ответ

3

Изменение тегов Префикс Ajax-Kit ГЭЭ, если он работает

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

А также:

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

осины используется для компонентов Asp.Net как UpdatePanel

------------ Обновление 2 ----------------- -

для вашей новой ошибки, вы не можете назначить PopupButtonID в текстовое поле, вам нужно ImageButton

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

Тем не менее, я настаиваю, вам нужно будет назначить тег-префикс для принял -Настроить правильно, и вам нужно будет правильно отрегулировать сборку, так как SanjeevRai сказал

+0

Постараюсь, но, как я сказал, в другую страницу, с тем же кодом , он отлично работает ... Что это может быть? – Ghaleon

+0

Изменилась ли ошибка после того, как вы ее попробовали? –

+0

Теперь я получаю 'не найдена сборка' AjaxToolkit', вы пропускаете сборку ... 'omg, я схожу с ума, потому что только на этой странице это не работает – Ghaleon

1

Вы должны добавить ссылку на dll «Ajaxtoolkit» в свой проект. Похоже, что он не получает правильной ссылки на DLL «AjaxToolkit».

Вы можете проверить ссылки своего проекта, щелкнув правой кнопкой мыши на веб-сайте и выбрав опцию «Страницы свойств». то он покажет вам все ссылки. отсюда вы можете проверить, будет ли ссылка «Ajaxtoolkit» в вашем проекте или нет.

Если ссылка на Ajaxtoolkit не существует в вашем проекте, то сначала вам нужно добавить эту ссылку!

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

После просмотра кода я получил вопрос ,

На самом деле вы используете calenderextender и текстовое поле TargetControlID внутри gridview, поэтому он не получает идентификатор текстового поля. Он никогда не будет идентифицировать идентификатор дочернего элемента управления непосредственно на странице aspx. вам нужно прикрепить «TargetControlID» и «PopupButtonID» во время выполнения внутри события RowDataBound gridview.

Вот пример кода, который вы можете использовать в вас 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 к сетке и удалить «TargetControlID» и атрибуты «PopupButtonID» от calenderextender т.е.

<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