有以下标记代码:
<asp:Repeater ID="GeneralRepeater" runat="server"
OnItemDataBound="GeneralRepeater_OnItemDataBound">
<ItemTemplate>
<tr>
<td>
Place:
<asp:DropDownList ID="GeneralDDL" DataTextField="Text"
DataValueField="Arena" runat="server" />
</td>
<th>
<asp:Button ID="GeneralButton" runat="server"
Text="Принять запрос" onclick="GeneralButton_Click" />
</th>
</tr>
</ItemTemplate>
</asp:Repeater>
protected void GeneralRepeater_OnItemDataBound(object sender,
RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
DropDownList myDDL = (DropDownList)e.Item.FindControl("GeneralDDL");
myDDL.DataSource = lstArenaSelect;
myDDL.DataBind();
MyObject obj= (MyObject)e.Item.DataItem;
Button GeneralButton = (Button)e.Item.FindControl("GeneralButton");
AcceptGeneralRequestButton.CommandArgument = obj.Id;
}
}
这显示了每个DropDownList
的初始化,其中包含一个对象列表,以及链接到行对象的行中的每个按钮。
在GeneralButton_Click
方法中,我可以获得绑定到转发器的对象的ID
。
如何从位于同一转发器行的DropDownList
获取值?
答案 0 :(得分:2)
谢谢大家,我使用了另一种方法:
Control parent = ((Control)sender).Parent;
DropDownList GeneralDDL = (DropDownList)parent.FindControl("GeneralDDL");
在OnClick按钮事件处理程序中调用代码。
答案 1 :(得分:1)
也许这样的事情会起作用:
protected void GeneralButton_Click(object sender, EventArgs e)
{
Button myGeneralButton = (Button)sender;
DropDownList myDDL = (DropDownList) myGeneralButton.NamingContainer.FindControl("GeneralDDL");
// myDDL.SelectValue should be what you are looking for.
}
答案 2 :(得分:1)
使用'Items'成员和提供的项目索引。
请参阅... http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.items.aspx 例如。
基本上...
DropDownList currDDL = GeneralRepeater.Items[currButtonItemIndex].FindControl('GeneralDDL') as DropDownList;
或
DropDownList currDDL = GeneralRepeater.Items[e.Item.ItemIndex].FindControl('GeneralDDL') as DropDownList;
对于事件处理程序。
PS。如果可以,请使用ListView而不是转发器。
答案 3 :(得分:1)
我认为你想要的是从RepeaterCommandEventArgs获取转发器行:
protected void MyRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
DropDownList myDDL;
myDDL = (DropDownList) e.Item.FindControl("GeneralDDL");
System.Diagnostics.Debug.WriteLine(myDDL.SelectedValue);
}
答案 4 :(得分:0)
我使用网格做了一些事情,而datagrid有一个行数据绑定事件 How do I data bind a drop down list in a gridview from a database table using VB?
如果您在转发器上使用ItemDataBound事件,您还可以使用e.Item.ItemIndex获取索引
我不认为转发器有一个行数据绑定事件。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater_events.aspx