Button Onclick inside a repeater
If i understand you correctly you want to handle both button's click event and get a value of the name and color of the Person of that RepeaterItem
. You could use the same handler:
aspx:
<asp:Button ID="btnNumber0" OnClick="btn_Click" runat="server" Text="0"/>
<asp:Button ID="btnNumber1" OnClick="btn_Click" runat="server" Text="1"/>
codebehind:
protected void btn_Click(object sender, EventArgs e)
{
Button btn = (Button) sender;
RepeaterItem item = (RepeaterItem) btn.NamingContainer;
Button btnNewNumber0 = (Button)item.FindControl("btnNumer0");
Button btnNewNumber1 = (Button)item.FindControl("btnNumer1");
bool btn0Clicked = btn == btnNewNumber0;
btnNewNumber0.Visible = !btn0Clicked;
btnNewNumber1.Visible = btn0Clicked;
// now call your webservice, you have all you need here
Label lblName = (Label) item.FindControl("lblName");
Label lblSurname = (Label) item.FindControl("lblSurname");
Label lblNumber = (Label) item.FindControl("lblNumber");
DropDownList ddlColor = (DropDownList) item.FindControl("ddlColor");
// now call your webservice, you get the color-selection via ddlColor.SelectedValue
}
Use also a DropDownList
instead of a HTML Select
if you want to access it on serverside.

user4059129
Updated on June 04, 2022Comments
-
user4059129 about 1 year
I have created a repeater that gets 3 different values from a webbservice(Name, Surname and Number). Depending on if the Number I receive is 1 or 0 there are 2 buttons that are set Visible= true or false. (btnNumber0 and btnNumber1).
<asp:Repeater ID="rpt1" runat="server" OnItemDataBound="rptHB_ItemDataBound" OnItemCommand="rptHB_ItemCommand"> <ItemTemplate> <div> <h1 class="click"> <asp:Label ID="lblName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Name").ToString() %>'></asp:Label> <asp:Label ID="lblSurname" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Surname").ToString() %>'></asp:Label> <asp:Label ID="lblNumber" runat="server" Visible="false" Text='<%# DataBinder.Eval(Container.DataItem, "Numer").ToString() %>'></asp:Label> </h1> <div class="expand"> <select id="optColor"> <option>Blue</option> <option>Red</option> <option>Yellow</option> <option>Green</option> <option>Black</option> </select> <asp:Button ID="btnNumber0" runat="server" Text="0"/> <asp:Button ID="btnNumber1" runat="server" Text="1"/> </div> </div> </ItemTemplate> </asp:Repeater>
The thing i cant get to work is to make a onClick function to my 2 button. Inside the OnCick I want to take the Name and Color(optColor) from the Person I select and send it back to my webbservice. Do i have to use OnItemCommand, if so can you help me? Or is it another way you can do it?
protected void Page_Load(object sender, EventArgs e) { GetInfo(); } private void GetInfo() { rpt1.DataSource = client.SendInfo(); rpt1.DataBind(); } private bool Getbutton(string ValueNumber) { return ValueNumber == "0"; } protected void rptHB_ItemDataBound(object sender, RepeaterItemEventArgs e) { Label lblNewNumber = (Label)e.Item.FindControl("lblNumber"); Label lblNewName = (Label)e.Item.FindControl("lblName"); Button btnNewNumber0 = (Button)e.Item.FindControl("btnNumer0"); Button btnNewNumber1 = (Button)e.Item.FindControl("btnNumber1"); string Number = lblNewNumber.Text; btnNewNumber0.Visible = GetButton(Number); btnNewNumber1.Visible = !GetButton(Number); } protected void rptHB_ItemCommand(object source, RepeaterCommandEventArgs e) { /* ??? */ }