Repeater mit HiddenField
Habe ich Folgendes HiddenField innerhalb eines Repeaters mit der Bezeichnung "AdminGetAllRPT":
<asp:Repeater ID="AdminGetAllRPT" runat="server" OnLoad="AdminGetAllRPT_Load">
<HeaderTemplate>
<table id="AdminGetAllTBL">
<tr>
<td></td>
<td>Username</td>
<td>Email Address</td>
<td>First Name</td>
<td>Last Name</td>
<td>Active?</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:LinkButton ID="AdminEditLnk" runat="server" OnClick="AdminEdit_OnClick">Edit
<asp:HiddenField ID="editAdminEmail" runat="server" Value='<%# Eval("emailAddress") %>' />
</asp:LinkButton>
</td>
<td><%# Eval("userName") %></td>
<td><%# Eval("emailAddress") %></td>
<td><%# Eval("firstName") %></td>
<td><%# Eval("lastName") %></td>
<td><%# Eval("isActive") %></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr class="alternateTemplate">
<td>
<asp:LinkButton ID="AdminEditLnk" runat="server" OnClick="AdminEdit_OnClick">Edit
<asp:HiddenField ID="editAdminEmail" runat="server" Value='<%# Eval("emailAddress") %>' />
</asp:LinkButton>
</td>
<td><%# Eval("userName") %></td>
<td><%# Eval("emailAddress") %></td>
<td><%# Eval("firstName") %></td>
<td><%# Eval("lastName") %></td>
<td><%# Eval("isActive") %></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
<tr>
<td colspan="2"><a href="#">Add Administrator</a></td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
Habe ich ein linkbutton, der ausgelöst wird, diesen code:
protected void AdminEdit_OnClick(object sender, EventArgs e)
{
HiddenField hf = (HiddenField)AdminGetAllRPT.FindControl("editAdminEmail");
aber die hf kommt null. Was mache ich falsch?
InformationsquelleAutor balexander | 2010-12-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern AdminGetAllRPT.FindControl...
zu
e.Element.FindControl...
Edit: Danke für den votedown auf eine richtige Antwort.
Aber ja.e.Element.FindControl wird, was Sie wollen, weil, was Sie versuchen zu tun, ist nicht ein Ereignis auf die Schaltfläche, es ist ein Ereignis, auf das ItemCommand-der repeater.
Dann in der code-behind-Sie können setup das event
Getan...
Iteration über alle RepeaterItems, können Sie eine Taste außerhalb der repeater (oder vielleicht im footer oder etwas, das ist nicht ein repeater ItemCommand -)
also auf das update auf Ihre Frage, die sich nun bietet-code. Meine Antwort richtig ist. Du machst nur etwas falsch. Benötigen Sie einen repeater ItemCommand-Ereignis, entfernen Sie die Veranstaltung aus Ihrem-Taste, und Sie erhalten nun e.Element.FindControl das ist genau das, was Sie wollen.
Ich entschuldige mich. Ich weiß, dass e.Artikel ist innerhalb Repeater-Funktionen. Ich war nicht die Verwendung, sondern vielmehr eine regelmäßige OnClick. Ich werde überprüfen Sie diese Lösung aus, wenn ich nach Hause komme. Danke!
meine erste Antwort war etwas vage cos Ihre Frage war ein wenig vage. Tut mir Leid.
Ich wusste nicht, wie vage es war, bis ich heute morgen aufwachte und Las es. Ich Schuld Erschöpfung ha
InformationsquelleAutor Phill
Eine andere Sache, es kann nicht gekapselt werden unter edit-button-Steuerelement.
Etwa sollte es Aussehen, so dass für die find-Methode arbeiten:
Seit AdminEdit.Controls ist ein container für Steuerelemente, Sie sollten jetzt in der Lage sein zu finden, dass die Kontrolle als erste Ebene Kind. Wenn es ist nicht ein Kind der Taste, werden Sie entweder für ein Kind oder einen Verweis aus einer anderen Methode. Dies gilt insbesondere für dynamisch erzeugte Steuerelemente. Dh... was Kontrolle oder root-element ist es ein Kind?
InformationsquelleAutor Cyber Slueth Omega
Müssen Sie zu finden, die hidden-Feld innerhalb einer RepeaterItem.
dies würde in der Tat erhalten Sie das versteckte Feld aus jeder Zeile der repeater.
InformationsquelleAutor jball
Als jball hingewiesen hat, die Sie benötigen zu Suche am repeater item-Ebene. Wo ist dein link button? Ich glaube, dass es möglich sein sollte-repeater, der es selbst (ansonsten können Sie mehrere versteckte Felder (für jeden repeater-Reihe) und was soll abgeholt werden von linkbutton?). Also, wenn beide link-button und hidden-Feld im repeater dann können Sie folgenden code verwenden
Lesen Sie meine aktuelle Antwort, die Sie wollen, verwenden Sie einen Repeater Item-Befehl.
InformationsquelleAutor VinayC