J'ai la mise en œuvre suivante:Comment conserver une trace d'un enregistrement dans un répéteur imbriqué?
alt text http://i47.tinypic.com/2v16fde.png
Comme vous pouvez le voir, j'ai un répéteur (la liste des machines) et un répéteur imbriqué (liste des WindowsServices l'intérieur de chaque machine). Pour chaque service Windows, je peux effectuer une action en utilisant un bouton. Cependant, pour effectuer cette action, j'ai besoin de savoir quelle Machine et quel WindowsService sont concernés.
Ceci est mon code:
protected void Page_Init(object sender, EventArgs e)
{
rptMachine.ItemDataBound += new RepeaterItemEventHandler(rptMachine_ItemDataBound);
}
protected void Page_Load(object sender, EventArgs e)
{
// bind the Machine repeater
rptMachine.DataSource = _monitoringService.Machines;
rptMachine.DataBind();
}
protected void rptMachine_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater nestedRepeater = (Repeater) e.Item.FindControl("rptWindowsService");
nestedRepeater.DataSource = ((IMachine) e.Item.DataItem).WindowsServices;
nestedRepeater.DataBind();
Button btnActionInner = null;
// bind the action button situated inside the nested repeater
foreach(RepeaterItem ri in nestedRepeater.Items)
{
if((Button)ri.FindControl("btnAction") != null)
{
btnActionInner = (Button) ri.FindControl("btnAction");
btnActionInner.CommandName = "ActionState";
btnActionInner.CommandArgument = strWindowsService;
}
}
}
}
protected void rptWindowsService_ItemCommand(object source, RepeaterCommandEventArgs e)
{
// do the specific action stop/run for the windows service
if (e.CommandName == "ActionState")
{
if(((Button)(e.CommandSource)).Text.Equals("Stop"))
{
}
else if(((Button)(e.CommandSource)).Text.Equals("Run"))
{
}
}
}
}
}
Donc, fondamentalement, j'ai besoin de savoir (à l'intérieur rptWindowsService_ItemCommand
) quelle est la paire qui est concernée par l'opération.
Quelle est la meilleure façon de faire cela?
N'hésitez pas à demander plus de précisions!
Merci