0
我有一个小的ASP
Web应用程序,可用于确定2个用户是否被分配了相同的座位号。如何将动态添加事件添加到动态创建的按钮
要显示结果/功能,我决定使用asp:Table
,每行有两个按钮(每个用户一个)。
管理员可以单击其中一个按钮从系统中清除该用户的座位号码值。
这里是它建立表格单元格的代码:
BuildDuplicateTable(在Page_Load
调用)
private void BuildDuplicateTable(List<Duplicate> duplicates)
{
foreach (var dup in duplicates)
{
var row = new TableRow();
var user1cell = new TableCell();
var seatcell = new TableCell();
var user2cell = new TableCell();
var button1 = new Button();
button1.Text = $"{dup.UserOne.UserName}";
var button1cell = new TableCell();
button1cell.Controls.Add(button1);
button1.Click += new EventHandler(Test);
var button2 = new Button();
button2.Text = $"{dup.UserTwo.UserName}";
var button2cell = new TableCell();
button2cell.Controls.Add(button2);
button2.OnClientClick = "return true";
button2.Click += (sender, eventArgs) =>
{
ActiveDirectory.ClearProperty(dup.UserTwo.UserName, "extensionAttribute2");
};
user1cell.Text = dup.UserOne.UserName;
seatcell.Text = dup.UserOne.SeatNumber;
user2cell.Text = dup.UserTwo.UserName;
row.Cells.Add(button1cell);
row.Cells.Add(seatcell);
row.Cells.Add(button2cell);
MyAspTable.Rows.Add(row);
}
}
我的问题是,当我点击任何按钮,页面很简单刷新,并且数据不再显示(正如我在Page_Load
中处理回发)。我的事件处理程序永远不会触发......请注意,在上面的代码中,我留下了两个独立的方法来附加我尝试过的事件处理程序 - 它们都不起作用!
重复
class Duplicate
{
public UserSeatNumberRelationship UserOne;
public UserSeatNumberRelationship UserTwo;
public Duplicate(UserSeatNumberRelationship userone, UserSeatNumberRelationship usertwo)
{
UserOne = userone;
UserTwo = usertwo;
}
}
UserSeatNumberRelationship
class UserSeatNumberRelationship
{
public string UserName;
public string SeatNumber;
public UserSeatNumberRelationship(string username, string seatnumber)
{
UserName = username;
SeatNumber = seatnumber;
}
}
的Page_Load
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack) return;
DuplicateList = FindDuplicates();
BuildDuplicateTable(DuplicateList);
}
测试
protected void Test(object sender, EventArgs e)
{
ActiveDirectory.ClearProperty(UserName, "extensionAttribute2");
}
你在哪里调用'BuildDuplicateTable'? – techspider
我在'Page_Load'里调用' – Bassie
把'if(!IsPostBack){BuildDuplicateTable(<>); }'以确保表格不会在每个帖子后面重新创建;重新创建可能会失去以前的控件上下文 –
techspider