2015-01-21 3 views
0

Я использую всплывающее окно eWorldUI Calendar (ссылка внизу) внутри GridView внутри UpdatePanel.Пользовательский контроль CalendarPopup внутри GridView не обновляется, когда внутри UpdatePanel

Если я не размещаю содержимое своей страницы внутри UpdatePanel, календарь обновляется отлично, когда я обновляю строку Gridview. Однако, когда все находится внутри UpdatePanel, календарь не обновляется, поэтому он всегда сохраняет идентификатор первого ряда календаря.

Мой вопрос:

В чем разница между GridView управления «в пределах UpdatePanel» и «за пределами UpdatePanel», и есть ли какие-либо причины, почему событие элемента управления, который генерирует календарь HTML не произошло бы вообще или не произойдет в нужный момент после обновления строки gridview внутри UpdatePanel? Советы по фиксируя вопрос также оценили :)

Вот пример кода (обратите внимание, что GridView DataSource устанавливается в код)

<html> 
<head> <!-- head stuff --> </head> 
<body> 
<form id="form1" runat="server"> 
<asp:scriptmanager id="ScriptManager1" runat="server"></asp:scriptmanager> 
<asp:updatepanel id="UpdatePanel1" runat="server"><contenttemplate> 
<asp:gridview id="GRIDVIEW1" showheader="False" showfooter="False" runat="server" autogeneratecolumns="false" onrowdatabound="GridView_RowDataBound">        
<Columns> 
    <asp:TemplateField> 
     <HeaderTemplate> ... </HeaderTemplate> 
     <HeaderStyle cssclass="..."></HeaderStyle> 
     <FooterTemplate> ... </FooterTemplate> 
     <FooterStyle cssclass="..."></FooterStyle> 
     <EditItemTemplate> 
      <asp:textbox id="GRIDVIEW1_DATE1" text="<%# Bind('GRIDVIEW1_DATE1') %>" runat="server"></asp:textbox> 
      <ew:calendarpopup imageurl="../../App_Themes/Images/calendar.gif" controldisplay="Image" id="GRIDVIEW1_DATE1_CAL" runat="server"></ew:calendarpopup> 
     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label id="GRIDVIEW1_DATE1" runat="server" text='<%# Bind("GRIDVIEW1_DATE1") %>'></asp:Label> 
     </ItemTemplate> 
     <ItemStyle cssclass="..."></ItemStyle> 
    </asp:TemplateField> 
    <asp:CommandField buttontype="Button" showdeletebutton="True" showeditbutton="True" causesvalidation="False" insertvisible="False"></asp:CommandField> 
</Columns> 
</asp:gridview> 
</contenttemplate></asp:updatepanel> 
</form> 
</body> 
</html> 

Это календарь на вопрос - http://www.eworldui.net/CustomControls/CalendarPopupDemo.aspx

Редактировать

я узнал, что мой вопрос на самом деле, так как динамический HTML генерируется по календарю, на самом деле внутри <form>, но он добавлен за пределы UpdatePanel. Это было не очевидно, потому что, как вы видите, все кажется внутри UpdatePanel. Поэтому, чтобы проверить его, я добавил <div class="outsideUpdatePanel"></div> за пределы UpdatePanel, а при запуске в Chrome и проверке HTML я мог видеть, что сгенерированный календарь HTML появляется после моего нового div.

+0

Я сожалею, если это кажется конкретным, я мог бы спросить то же самое в целом с какого-либо контроля, поэтому anwser не должен быть примерно Календарь. – Yann

ответ

1

В GridView нет никакой разницы в панели обновления или из нее.
Жизненный цикл полной страницы происходит в обоих случаях.
Единственное отличие состоит в том, что только содержимое ContentTemplate UpdatePanel передается обратно в браузер.

Вы не указали объект Gridview DataSourceID, поэтому вам нужно управлять данными. Убедитесь, что вы обновляете GridView после обновления.

А также я должен спросить об этом, потому что я не вижу ваш список полей источника данных, но действительно ли он содержит поле под названием GRIDVIEW1_DATE1? Я просто хочу, чтобы подтвердить, что вы не означает, связываться с контролем TextBox Gridview, используя его ID

EDIT: Кроме того, Just FYI, если вы разрабатываете для HTML5, вы можете просто установить свойство TextBox TextMode к Дата и использовать встроенное всплывающее окно в современных браузерах. (Text свойство должно быть в формате гггг-мм-дд)

+0

Да, у меня есть столбец в моей таблице, который равен ID. Это также то, что я прочитал о жизненном цикле, поэтому единственная причина, по которой я вижу сейчас, состоит в том, что это должно означать, что html элемента управления календарем не добавляется в UpdatePanel. – Yann

+0

Я еще не решил свою проблему, но ваше сообщение делает мой вопрос. Теперь я знаю, почему он не обновляется, поэтому я обновляю сообщение с предпринятыми шагами. – Yann

+0

Я не вижу привязки для элемента управления, то есть я все равно не вижу, чтобы элемент управления заполнил связанное текстовое поле или наоборот, чтобы показать начальную точку для выбора пользователя ... сегодняшнюю дату или что-то подобное. Это все управляется в коде? – fnostro

Смежные вопросы