2012-06-19 55 views
0

我有一个要求,当addnew链接点击时,将编辑面板显示为数据网格的第二行。为此,我采取了设置显示的div:无。点击添加新链接后,我可以显示为第二行。现在实际的问题开始了。日历扩展不起作用

这个div得到了一个文本框,它与日历扩展器绑定在一起,在文本框中单击时表现为claendar。但当不可见div的html插入为网格的第二行时,日历不显示。请让我知道是否有人需要更好地了解问题的代码。任何帮助将不胜感激。

回答

0

在你的gridview中放置一个模板字段而不是div。使模板化的领域举行一个文本框和日历扩展。

<asp:GridView ID="GridView1" runat="server"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:TextBox ID="textbox1" runat="server"></asp:TextBox> 
       <asp:CalendarExtender ID="CalendarExtender1" TargetControlID="textbox1" runat="server"> 
       </asp:CalendarExtender> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

,但如果你想它,当你插入你应该把

<asp:GridView ID="GridView1" runat="server"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:TextBox ID="textbox1" runat="server"></asp:TextBox> 
       <asp:CalendarExtender ID="CalendarExtender1" TargetControlID="textbox1" runat="server"> 
       </asp:CalendarExtender> 
      </ItemTemplate> 
      <InsertItemTemplate> 
       <asp:TextBox ID="textbox1" runat="server"></asp:TextBox> 
       <asp:CalendarExtender ID="CalendarExtender1" TargetControlID="textbox1" runat="server"> 
       </asp:CalendarExtender> 
      </InsertItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

我希望这有助于。

+0

我不能在我的项目的这个阶段改变网格,因为这是按照我上面描述的那样工作的。是否有任何可能使日历扩展工作,如果它从设置显示的div取得:无。 – user1466710

+0

发布你的代码会帮助我,我不知道你现在的网格是什么样的。 –

+0

感谢您的帮助。我知道上面说的一个,但在我的情况下,我必须从div设置为无显示。我通过抓取日历的行为ID并调用show方法并更改日历的顶部和左侧位置以使其出现在目标控件下方来解决问题。非常感谢你的帮助。 – user1466710

0
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="AjaxControlToolkit" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="jquery-1.4.1.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     function AddCalendars() 
     { 

      //The last parameter should be the TargetControl's id. If you use "TextBox1", the TextBox1 would be associated. 
      var elem = $(".deneme"); 

      for (var a = 0; a < elem.length; a++) 
      { 
       if ($find("CalendarExtender" + elem[a].id)) 
       { 
        $find("CalendarExtender" + elem[a].id).dispose(); 
       } 
      } 
      for (var i = 0; i < elem.length; i++) 
      { 
       $create(AjaxControlToolkit.CalendarBehavior, { "id": "CalendarExtender" + elem[i].id }, null, null, elem[i]); 
      } 

     } 
    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
     <%--the dummy calendar which is used to download the related script file.--%> 
     <asp:TextBox ID="dummyTextBox" runat="server" Style="display: none"></asp:TextBox> 
     <AjaxControlToolkit:CalendarExtender ID="dummyCalendarExtender" runat="server" Enabled="True" 
      TargetControlID="dummyTextBox"> 
     </AjaxControlToolkit:CalendarExtender> 
     <%--the dummy calendar which is used to download the related script file.--%> 
     <asp:Button ID="Button1" OnClientClick="AddCalendars();return false" runat="server" 
      Text="CreateCalendarFromClient" /><br /> 
     input:<input id="deneme1" type="text" class="deneme" /><br /> 
     <br /> 
     <br /> 
     <br /> 
     <br /> 
     <br /> 
     <br /> 
     <br /> 
     TextBox: 
     <asp:TextBox ID="deneme2" runat="server" cssclass="deneme" ClientIDMode="Static"></asp:TextBox> 
    </div> 
    </form> 
</body> 
</html>