我正在尝试使用日历控件在编辑模式下填充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 :(得分: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语句中设置。这变得更加复杂。
答案 1 :(得分:0)
由于textBox位于EditItemTemplate中,因此您无法像这样访问它。你必须要么在数据绑定时使用findcontrol,要么依靠javascript来完成工作。