Någon som har löst ett liknande problem kanske? Jag har en user controll som heter IngredientDropDownLists, den består av 3 dropdownlists och 1 textbox, med namn Dl1, Dl2, Dl3, txtM.
På en sida skapar jag x antal uppsättningar av denna user controll innuti en placeholder. Det enda jag vet är id:t på de dynamiskt laddade instanserna av. Således vet jag id:t på hela uppsättningen av dropdownlists och textboxar. Det är efter postback jag vill få fram värdena i dropdownlisterna och textboxarna, en usercontroll för sig. Loopa igenom mina usercontrols.
Jag laddar mina user controlls på följande sätt
for (int i = 0; i < numberOfing; i++)
{
Receptomaten.IngredientDropDownLists uc = (Receptomaten.IngredientDropDownLists)LoadControl("IngredientDropDownLists.ascx");
uc.ingredientGroups = m_ingredientGroups;
uc.ingredientMeasures = m_measures;
uc.ingredients = m_ingredients;
uc.ID = "uc"+ i.ToString();
plcHldIng.Controls.Add(uc);
}
Hur ska jag göra för att i min knapptrycknings metod få tag på värdena i mina usercontrolls. Jag har provat allt möjligt men det verkar inte lyckas, tacksam för all hjälp
Kan du inte istället låta logiken som hör till userControllen vara där. Exempel scenario:
//UserControl
class IngredientDropDownLists : UserControl
{
#region Properties
public string Group
{
get{return ddlGroups.SelectedValue;}
set{ddlGroups.SelectedValue = value;}
}
public string Ingredient
{
get{return ddlIngredients.SelectedValue;}
set{ddlIngredients.SelectedValue = value;}
}
public string MeasureKind
{
get{return ddlMeasureKinds.SelectedValue;}
set{ddlMeasureKinds.SelectedValue = value;}
}
public string MeasureQuantity
{
get{return txtMeasure.Text;}
set{txtMeasure.Text = value;}
}
#endregion
protected DropDownList ddlGroups, ddlIngredients, ddlMeasureKinds;
protected TextBox txtMeasure;
private void Page_Load(object sender, EventArgs e)
{
}
public static void Save()
{
//Spara till din databas
}
}
//.aspx
foreach(Receptomaten.IngredientDropDownLists uc in plcHldIng.Controls)
{
//Om du vill skriva ut värderna kan du lätt komma åt dem via
Response.Write(uc.Group);
Response.Write(uc.Ingredient);
Response.Write(uc.MeasureKind);
Response.Write(uc.MeasureQuantity);
//Och om du vill spara aktuell IngredientData
uc.Save();
}