Wie FindControls im repeater-Steuerelement?
Will ich aktivieren oder deaktivieren 'ParticipateBtn' je nach EventStartDate. Ich bin immer dieser Fehler:der Objektverweis nicht auf eine Instanz eines Objekts.
Start Datum :
<%# CheckEnability((DateTime)Eval("Event_Start_Date")) %>
<asp:Button runat="server"
ID="ParticipateBtn"
CommandName="Participate"
CommandArgument='<%# Eval("Event_Id") + "|" + Eval("Event_Name") + "|" + Eval("Volume") + "|" + Eval("Tournament_Id") %>'
Text="Participate" />
</ItemTemplate>
<FooterTemplate></FooterTemplate>
<SeparatorTemplate>
<hr style="color:Silver; height:1px;" />
</SeparatorTemplate>
</asp:Repeater>
Den code hinter...
//Code behind
protected string CheckEnability(DateTime eventstartdate)
{
if (eventstartdate.Date < DateTime.Now.Date)
{
Button btn = (Button)Repeater1.FindControl("ParticipateBtn");
btn.Enabled = false;
}
return eventstartdate.ToString("yyyy-MM-dd");
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wechseln Sie die enabled-Eigenschaft des button-Steuerelements mit deklarativer syntax und die Anzeige und das format der
Event_Start_Date
mit der Eval-Methoden format-parameter. Auf diese Weise gibt es keine Notwendigkeit für die CheckEnability Methode.Steuerelemente nicht im repeater-bis-Datenbindung, und dann jedes Steuerelement in der ItemTemplate-existiert einmal pro Artikel - also, wenn Sie binden an eine Quelle mit 3 Elementen gibt es 3 ParticipateBtns. Sie müssen wissen, welche Sie wollen, bevor Sie es finden können. Sobald Sie das tun, können Sie es wie folgt:
Fügen Sie das Attribut
OnItemDataBound="repeater_ItemDataBound"
zu Ihrem repeater.Dann in Ihre code-behind-Aktionen: