2010-10-14 38 views
0

這是我的鏈接按鈕: -需要用無差錯的名字「lnk1」不在當前情況下存在幫助

<asp:LinkButton ID="lnk1" Text="Set as Default" runat="server" Visible="false" OnClick="lnk1_OnClick"></asp:LinkButton> 

在代碼隱藏我只是使其可見

lnk1.Visible = true; 

我已經檢查過n以上的ID ..什麼錯?智能感知不會檢測到它..我正在做一些非常愚蠢的事情..只是不能確定它是什麼..幫助!

我甚至重新啓動視覺Studio..still同樣的錯誤

+0

你的@page指令是什麼樣的,類聲明(public partial class XX)和文件後面的代碼的名稱是什麼?和什麼版本的ASP.NET? – 2010-10-14 07:32:07

+0

@rune ::當我將這兩行註釋掉時代碼的其餘部分仍然正常工作 – Serenity 2010-10-14 07:33:17

+0

只是試圖幫助:)完全可以讓代碼的其餘部分工作。例如。如果你繼承你的代碼隱藏(不使用從類聲明中可見的部分),你可能忘記聲明你的控件。如果你使用partial,但是從基本頁面派生,那麼即使你的@page指令是錯誤的(錯誤代碼隱藏文件),其餘的仍然可以工作,因爲任何其他工作都不排除上面的內容只是使它不太可能:) – 2010-10-14 07:46:00

回答

5

是另一個控件模板的控件的一部分嗎?例如。中繼器ItemTemplate等的一部分?

更新:

由於運曾表示,這是一個轉發器的ItemTemplate的一部分,只是覺得應該解釋做什麼(儘管OP已經整理吧)

你需要調用的FindControl上Repeater或Controls.OfType()取決於情況,以獲得控制權。

ASP:

<asp:Repeater runat="server" ID="rptrTest"> 
     <ItemTemplate> 
      <asp:TextBox runat="server" ID="txtBxName" /> 
      <asp:CheckBox runat="server" ID="chkBx1" /> 
      <asp:CheckBox runat="server" ID="chkBx2" /> 
     </ItemTemplate> 
    </asp:Repeater> 

C#

 IEnumerable<CheckBox> chkBoxes = rptrTest.Controls.OfType<CheckBox>(); 
     TextBox txtBxName = (TextBox)rptrTest.FindControl("txtBxName"); 

我會經常做常用的控件(雖然閹這是一個好主意或沒有我敢肯定有人會現在讓我知道),是創建一個執行此代碼的成員。

private TextBox _txtBxName; 
    public TextBox txtBxName { 
     get { 
      if (_txtBxName == null) { 
       _txtBxName = (TextBox)rptrTest.FindControl("txtBxName"); 
      } 
      return _txtBxName; 
     } 
    } 
+0

是的,它的Repeater控件的ItemTemplate裏面..現在是什麼? – Serenity 2010-10-14 07:46:57

+0

好吧我有點想出來... thnx所有 – Serenity 2010-10-14 08:01:35

+0

大聲笑,小但基本的細節... – CyberDude 2010-10-14 08:16:30

2

有時候設計師類是不正確重新生成。您可以嘗試:

  • 選擇線路,剪切,保存,重建, 粘貼回去,保存
  • 刪除設計師 cs文件,右鍵單擊ASPX, 轉換爲Web應用程序 - >此 將產生設計師類從 劃傷
0

由於我沒有權利評論;所以...

  • 在哪個事件中,您正在使該項目可見?嘗試在PageLoad中做到這一點。
  • 你可以顯示你的標記嗎?

或者,您可以嘗試Find的控件。

+0

它不會是一個編譯錯誤,而是一個潛在的空引用異常,如果是這種情況 – 2010-10-14 07:46:56

相關問題