2010-08-12 82 views
3

我正尝试使用日历控件在编辑模式下的gridview单元格中填充文本框。无法在GridView中识别文本框编辑项目模板

错误与该行

<a href="javascript:OpenPopupPage('Calendar.aspx','<%= txtGvEditTeDate.ClientID %>','<%= Page.IsPostBack %>');"> 

它不承认该文本框。

编译错误

编译器错误消息:CS0103: 'txtGvEditTeDate' 名称不在当前上下文中存在

源错误:

<EditItemTemplate> 
     <asp:TextBox ID="txtGvEditTeDate" runat="server" onfocus="blur();" 
      Text='<%# Bind("TimeEntryDate", "{0:d}") %>'> 
     </asp:TextBox> 

     <a href="javascript:OpenPopupPage('Calendar.aspx','<%= txtGvEditTeDate.ClientID %>','<%= Page.IsPostBack %>');"> 
     <img src="images/icon-calendar.gif" border="0" align="middle" ></a> 
</EditItemTemplate> 

编辑

我添加了runat =“server”到<a>和现在我没有收到错误,但是在日历控件中选择日期时,它不会被插入到txtGvEditTeDate文本框中。

+0

更新了我的帖子以添加您的修改。 – 2010-08-13 01:34:10

回答

0

由于textBox位于EditItemTemplate中,因此无法像那样访问它。你必须在数据绑定时使用findcontrol,或者依靠javascript来完成工作。

2

考虑将它<a id="r1" runat="server" />

然后,在的RowDataBound或RowEditing,这样做:

var ctl = e.Row.FindControl("txtGvEditTeDate"); 
var link = e.Row.FindControl("r1"); 
link.href = "javascript ..."; 

,并从服务器分配。另外,您可能需要执行:e.Row.Cells []来引用单元格,因为行查找控件有时不适用于我。

编辑:如果您在将日期映射回编辑控件时遇到问题,那可能是因为每个控件都映射有附加到其上的gridview ID(查看我的意思),因此控件无法被txtGvEditTeDate引用,所以你将不得不想出一个解决方法。一种方法可能是将文本框引用存储在客户端JavaScript变量中,该变量可以在链接href声明中设置。这变得更加复杂。

+0

对不起,我不太明白。什么是“r1”? “javascript ...” – 2010-08-12 16:39:17

+0

哦,格式错误...会更正,它应该是链接控制。对于那个很抱歉。 – 2010-08-12 17:06:25