2011-08-17 16 views
1

我在帶有幾個數據綁定字段的中繼器中有一個鏈接按鈕。我試圖去我可以在數據綁定後在onClientClick上設置按鈕的位置,但是每次嘗試訪問鏈接按鈕時,我都會返回空值。找不到中繼器中的鏈接按鈕

我已經瀏覽過涉及中繼器和控件的每個問題,並且一直無法弄清楚。

在.aspx

<asp:Repeater ID="DailyRepeater" OnItemCommand="DailyRepeater_ItemCommand" runat="server"> 
        <HeaderTemplate> 
         <tr> 
          <td class="coltitle"> 
           Time 
          </td> 
          <td class="coltitle"> 
           Activity 
          </td> 
          <td class="coltitle"> 
           Hours 
          </td> 
         </tr> 
        </HeaderTemplate> 
        <ItemTemplate> 
         <tr class="evenrow"> 
          <td> 
           <%# Eval("StartTime","{0:HH:mm}") %>-<%# Eval("EndTime","{0:HH:mm}") %> 
          </td> 
          <td> 
           <%# Eval("Description") %> 
          </td> 
          <td> 
           <%# Eval("Hours","{0:0.0}") %> 
          </td> 
          <td> 
            <asp:LinkButton runat="server" CausesValidation="false" ID="editbutton" Text="Edit">Edit</asp:LinkButton> 
          </td> 
         </tr> 
        </ItemTemplate> 

的.aspx.cs

protected void DailyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     LinkButton myButton = (LinkButton)e.Item.FindControl("editbutton"); 
     myButton.OnClientClick = (popupWindow.GetTargetPopupCode("URL"); 
    } 

從我讀過,我應該能夠得到使用RepeaterItemEventargs按鈕。但我似乎無法在這裏找到它。我想到的另一件事是綁定沒有發生的時間發生(這是沒有意義的,因爲這是一個數據綁定事件),但由於某種原因e回來e.Item有一個dataItem爲null和-1的itemIndex ...

我只是非常困惑,失去了任何幫助將不勝感激。

謝謝!

回答

5

這聽起來像你沒有保護的物品類型。通常,它會觸發標題,所有項目,然後是頁腳。你需要這樣做:

if(e.Item.ItemType == ItemType.Item || e.Item.ItemType == ItemType.AlternatingItem) 
{ 
     LinkButton myButton = (LinkButton)e.Item.FindControl("editbutton"); 
     myButton.OnClientClick = (popupWindow.GetTargetPopupCode("URL"); 
} 
+0

唉,尋找一個更復雜的答案的時間和它出來我是不是檢查正確的類型...感嘆。謝謝! – Jabsy

0

爲什麼不設置該屬性的sender對象上,像這樣:

sender.OnClientClick = //whatever// 
+0

發件人的類型爲「對象」,它沒有OnClientClick屬性。 – mandreko