2012-03-01 40 views
0

我有一箇中繼器,並使用枚舉的 值設置了html複選框控件的值,編碼一個幻數。當我嘗試 訪問中繼器的ItemCreated事件處理程序 中的html複選框控件時,該值爲空字符串。爲什麼會這樣,我該如何解決它?中繼器(ASP.NET Web窗體)中使用枚舉的複選框的值爲空

C#代碼

protected void Repeater1_ItemCreated(object sender, RepeaterItemEventArgs e) 
{ 
    var myObject = e.Item.DataItem as MyObject; 
    if (myObject != null) 
    { 
     var checkBox = e.Item.FindControl("checkbox1") as HtmlInputCheckBox   

     // The value is empty! 
     var value = checkBox.Value; 
    } 
} 

不工作

<asp:Repeater ID="Repeater1" OnItemCreated="Repeater1_ItemCreated" runat="server"> 
    <ItemTemplate>  
     <input type="checkbox" id="checkbox1" value='<%# SomeEnum.Value %>' /> 
    </ItemTemplate> 
</asp:Repeater> 

工作

<asp:Repeater ID="Repeater1" OnItemCreated="Repeater1_ItemCreated" runat="server"> 
    <ItemTemplate>  
     <input type="checkbox" id="checkbox1" value="1" /> 
    </ItemTemplate> 
</asp:Repeater> 
+1

嘗試攻入OnItemDataBound。 – Malk 2012-03-01 22:12:32

+0

這是解決方案。感謝Adam!發生了什麼事是我選擇了ItemCreated而不是ItemDataBound(它們在intellisense中彼此緊挨着)。我有一種預感,它與控制系統的生命週期有關,但我沒有看到我接錯了事件!非常感謝! – Halcyon 2012-03-01 22:18:55

回答

1

ItemCreatedItemDataBound之前,也對每一個回傳被觸發,重現他控制,即使Repater不數據綁定再次。所以我不會使用ItemCreated,如果您需要訪問Repeater之類的任何databound WebControlDataSource

除此之外,使複選框runat=server(或使用ASP.NET CheckBox)如果你想find在服務器上。