我正在创建一个预算页面,客户可以在表中选择许多服务和产品。选择服务后,他可以从表中删除一些服务。因此,作为解决方案,我创建了一个带有EventHandler的动态按钮以删除指定的服务。
但是当我单击以删除时,有时必须双击以删除服务。
protected void Page_Load(object sender, EventArgs {
if (servicosSelecionados == null)
servicosSelecionados = new List<Servico>();
carregarTabelaServicos();
}
protected void Page_LoadComplete(object sender, EventArgs {
carregarSelectServicos();
}
protected void carregarTabelaServicos(){
TableRow row;
TableCell cell;
Button btn;
if (tbl_Servicos.Rows.Count > 0)
tbl_Servicos.Rows.Clear();
if (servicosSelecionados.Count > 0){
row = new TableRow();
cell = new TableCell();
btn = new Button();
btn.Click += new EventHandler(btn_RemoverServico_Click);
btn.CommandArgument = s.idServico.ToString();
cell.Controls.Add(btn);
row.Cells.Add(cell);
tbl_Services.Rows.Add(row);
}
}
//Event that remove the service from the table
protected void btn_RemoverServico_Click(object sender, EventArgs e) {
Button btn = sender as Button;
int id;
foreach (Servico s in servicosSelecionados)
{
id = int.Parse(btn.CommandArgument);
if (s.idServico == id)
{
servicosSelecionados.Remove(s);
break;
}
}
carregarTabelaServicos();
}
//Event that add service to the table
protected void btn_AdicionarServico_Click(object sender, EventArgs e)
{
..conection to database using var Context..
if (!txt_ServicoSelecionado.SelectedValue.Equals("-")){
int id = int.Parse(txt_ServicoSelecionado.SelectedValue);
Servico s = context.Servico.Where(servico => servico.idServico == id).FirstOrDefault();
servicosSelecionados.Add(s);
carregarTabelaServicos();
}
}
我需要从列表中删除服务,并使用列表更新表。 但是在第一次单击中,执行甚至没有通过“ btn_RemoverServico_Click”函数。