直放站与HiddenField [英] Repeater with HiddenField
问题描述
我有标有AdminGetAllRPTRepeater中以下HiddenField:
I have the following HiddenField within a Repeater labeled "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>
我有这种触发code一个LinkButton:
I have a linkbutton that fires this code:
protected void AdminEdit_OnClick(object sender, EventArgs e)
{
HiddenField hf = (HiddenField)AdminGetAllRPT.FindControl("editAdminEmail");
但HF快到了空。我在做什么错了?
but the hf is coming up null. What am I doing wrong?
推荐答案
更改... AdminGetAllRPT.FindControl
Change AdminGetAllRPT.FindControl...
到
e.Item.FindControl ...
e.Item.FindControl...
编辑:谢谢你在正确的答案votedown
Thanks for the votedown on a correct answer.
但是,是e.Item.FindControl是你想要什么,因为你正在试图做的是没有按钮的事件,它在中继器的ItemCommand事件。
But yes e.Item.FindControl is what you want because what you're trying to do is not an event on the button, it's an event on the ItemCommand of the repeater.
<asp:Repeater OnItemCommand="MyButtonCommandEvent" ID="AdminGetAllRPT" runat="server" OnLoad="AdminGetAllRPT_Load">
然后在code-后面你可以设置事件
Then in the code-behind you can setup the event
void MyButtonCommandEvent(Object src, RepeaterCommandEventArgs e) {
//My event that is raised for each button pressed in the RepeaterItem
var poo = e.Item.FindControl("myhiddenfieldid") as HiddenField;
}
完成...
要遍历所有RepeaterItems,你可以有一个按钮中继之外(或者页脚什么的,这不是一个中继器ItemCommand)
To iterate over all RepeaterItems, you can have a button outside of the repeater (or maybe in the footer or something, this is not a repeater ItemCommand)
foreach(var item in AdminGetAllRPT.Items)
{
if (item.ItemType == RepeaterItemType.Item || item.ItemType == RepeaterItemType.AlternatingItem)
{
var hiddenField = item.FindControl("hiddenFieldid") as HiddenField;
//Do Stuff
}
}
这篇关于直放站与HiddenField的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!