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