【问题标题】:ASP.NET AJAX Toolkit CalendarExtender not working C#ASP.NET AJAX 工具包 CalendarExtender 不工作 C#
【发布时间】:2009-11-20 20:14:56
【问题描述】:

我有以下问题: 我有一个页面,我需要从后面的代码中动态创建很多元素。这显然取决于从数据库传递的内容,但元素的数量可以改变,这就是为什么我不能做静态的。

我现在拥有的是:

我已经静态创建了 PANEL:

<asp:Panel ID="pFullInfo_lStartDateStr" runat="server"></asp:Panel>

然后在后面的代码中,我正在创建其他控件并将它们添加到我的标签中。我遇到的问题是单击 iEditStartDateCalendar 后应该出现的 CalendarExtender 没有弹出 :( 我在这里看不到我做错了什么?有什么帮助吗?!?!

// StartDate
Label lStartDateSite = new Label();
pFullInfo_lStartDateStr.Controls.Add(lStartDateSite);

Label lStartDate = new Label();
pFullInfo_lStartDateStr.Controls.Add(lStartDate);

ImageButton ibEditStartDate = new ImageButton();
ibEditStartDate.ID = "ibEditStartDate_" + this_site_id;
pFullInfo_lStartDateStr.Controls.Add(ibEditStartDate);

TextBox tbEditStartDate = new TextBox();
pFullInfo_lStartDateStr.Controls.Add(tbEditStartDate);

Image iEditStartDateCalendar = new Image();
iEditStartDateCalendar.ID = "iEditStartDateCalendar";
iEditStartDateCalendar.ImageUrl = "~/i/small/calendar.png";
iEditStartDateCalendar.ImageAlign = ImageAlign.AbsMiddle;
pFullInfo_lStartDateStr.Controls.Add(iEditStartDateCalendar);

CalendarExtender ceEditStartDate = new CalendarExtender();
ceEditStartDate.ID = "ceEditStartDate_" + this_site_id;
ceEditStartDate.PopupButtonID = iEditStartDateCalendar.UniqueID;
ceEditStartDate.TargetControlID = tbEditStartDate.UniqueID;
ceEditStartDate.PopupPosition = CalendarPosition.Right;
pFullInfo_lStartDateStr.Controls.Add(ceEditStartDate);

【问题讨论】:

    标签: asp.net ajaxcontroltoolkit


    【解决方案1】:

    通常,在标记中添加日历扩展器时,您只需将PopupButtonID 和TargetControlID 设置为这些控件的ID,而不是UniqueID。

    当动态添加标签之类的东西时,您将 AssociatedControlID 设置为控件的ID,而不是UniqueID/ClientID,框架会在渲染时解决它。

    此外,大多数 JavaScript 库更喜欢您使用控件的实际 id,而不是 name 属性,因此您应该改用 ClientID。

    【讨论】:

      【解决方案2】:

      我找到了解决方案。 问题出在我传递的“UniqueID”上。 正确的解决方案在这里:

      
      // StartDate
      Label lStartDateSite = new Label();
      pFullInfo_lStartDateStr.Controls.Add(lStartDateSite);
      
      Label lStartDate = new Label();
      pFullInfo_lStartDateStr.Controls.Add(lStartDate);
      
      ImageButton ibEditStartDate = new ImageButton();
      ibEditStartDate.ID = "ibEditStartDate_" + this_site_id;
      pFullInfo_lStartDateStr.Controls.Add(ibEditStartDate);
      
      TextBox tbEditStartDate = new TextBox();
      pFullInfo_lStartDateStr.Controls.Add(tbEditStartDate);
      tbEditStartDate.ID = "tbEditStartDate_" + this_site_id;
      
      Image iEditStartDateCalendar = new Image();
      iEditStartDateCalendar.ID = "iEditStartDateCalendar";
      iEditStartDateCalendar.ImageUrl = "~/i/small/calendar.png";
      iEditStartDateCalendar.ImageAlign = ImageAlign.AbsMiddle;
      pFullInfo_lStartDateStr.Controls.Add(iEditStartDateCalendar);
      
      CalendarExtender ceEditStartDate = new CalendarExtender();
      ceEditStartDate.ID = "ceEditStartDate_" + this_site_id;
      ceEditStartDate.PopupButtonID = iEditStartDateCalendar.ID;
      ceEditStartDate.TargetControlID = tbEditStartDate.ID;
      ceEditStartDate.PopupPosition = CalendarPosition.Right;
      pFullInfo_lStartDateStr.Controls.Add(ceEditStartDate);
      

      所以我基本上做了什么,我为用于日历的 TextBox 和 Image 分配了一个 ID,这很有效:] 非常感谢 Stack Overflow :]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-22
        • 1970-01-01
        相关资源
        最近更新 更多