我正在创建动态控件,以相同的动态名称和ID分配它,但是当我点击按钮“A”然后点击按钮“B”然后再次点击按钮“A”时,这会给我一个错误
找到了具有相同ID的多个控件。 FindControl要求控件具有唯一ID。
这是我的代码以及我如何避免重复我
protected void DynamicButton()
{
//BAD TOOLS INTO THE LIST AND SHOW
List.ListUsers listsArea = new List.ListUsers();
List<Data.Area> Area = listsArea.AreaList();
List<Data.Area> ListOfEquiposNoOk = Area.Where(x => x.AREA == "ENG" && x.STANDBY == 1).ToList();
List<Button> BotonesBad = new List<Button>();
var TeamBad = ListOfEquiposNoOk.Select(x => x.TEAM).Distinct().ToList();
foreach (var team in TeamBad)
{
Button newButtonBad = new Button();
if (newButtonBad.ID != newButtonBad.ID)
{
BotonesBad = Bad.Controls.OfType<Button>().ToList();
BotonesBad.Add(newButtonBad);
}
else
{
newButtonBad.CommandName = "Btn" + Convert.ToString(team);
newButtonBad.ID = "BtnB_" + Convert.ToString(team);
newButtonBad.Text = team;
newButtonBad.CommandArgument = "ENG";
newButtonBad.Click += new EventHandler(newButton_Click);
Bad.Controls.Add(newButtonBad);
newButtonBad.Click += new EventHandler(newButton_Click);
newButtonBad.CssClass = "btn-primary outline separate";
}
}
我需要ID才能触发UpdatePanel
ADDED
public partial class Dashboard : System.Web.UI.Page
{
static bool enableGood = false;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DynamicButton();
}
else if(enableGood)
{
DynamicButton();
}
}
protected void DButton(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "showAndHide();", true);
enableGood = true;
DynamicButton();
}
答案 0 :(得分:0)
假设“团队”是此行中的一个对象:
newButtonBad.ID = "BtnB_" + Convert.ToString(team);
可能有你的问题。 “.ToString()”通常将类型作为字符串返回。所以每个按钮都会得到相同的名称(因为它们都是“团队”类型)。
您可以在团队对象中覆盖ToString(),或使用特定的团队属性(例如team.ID)。你可以使用这样的属性:
newButtonBad.ID = "BtnB_" + team.ID.ToString();
正如评论中已经指出的那样,从
更改您的评估if (newButtonBad.ID != newButtonBad.ID)
到
if (team.ID != newButtonBad.ID)
这应该可以解决问题。