繁体   English   中英

Gridview编辑项模板中无法识别文本框

[英]Textbox not recognized in Gridview Edit Item Template

我正在尝试使用日历控件在编辑模式下填充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文本框中。

考虑将其<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语句中设置。 这变得更加复杂。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM