2010-08-12 106 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