我在 asp:repeater 项目模板中有一个下拉列表。 我怎样才能在按钮点击事件中获得它的值(value)。
<asp:Repeater runat="server" ID="WorkflowListAfter" onitemcreated="WorkflowListAfterItemCreated">
<ItemTemplate>
<asp:DropDownList ID="ddlWorkflowMembers" runat="server" DataTextField="MemberName" DataValueField="MemberID">
</ItemTemplate>
</asp:Repeater>
protected DropDownList ddlWorkflowMembers = new DropDownList();
protected void WorkflowListAfterItemCreated(object sender, RepeaterItemEventArgs e)
{
ddlWorkflowMembers = (DropDownList) e.Item.FindControl("ddlWorkflowMembers");
}
protected void BtnSaveClick(object sender, EventArgs e) {
if (ddlWorkflowMembers.SelectedItem == null) return;
}
上面的代码在第一次运行但在回发之后 ddlWorkflowMembers 始终为 null expersion。
最佳答案
假设 BtnSave
也在转发器中。
您通过转换按钮的 NamingContainer
获得 RepeaterItem
.然后您可以使用 FindControl
获取对您的 DropDownList
的引用:
protected void BtnSaveClick(object sender, EventArgs e) {
var btn = (Button)sender;
var item = (RepeaterItem)btn.NamingContainer;
var ddl = (DropDownList) item.FindControl("ddlWorkflowMembers");
// ...
}
如果按钮在中继器外面,你想保存所有的项目,你需要遍历所有:
protected void BtnSaveClick(object sender, EventArgs e) {
foreach(RepeaterItem item in WorkflowListAfter.Items)
{
var ddl = (DropDownList) item.FindControl("ddlWorkflowMembers");
// ...
}
}
关于c# - 在 asp :repeater on button click event 中找到控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880297/