我從代碼隱藏構造一個LinkButton,並且我需要將onclick分配給一個方法,並將其傳遞給一個參數。我有這個至今:將LinkButton的OnClick事件設置爲隱藏代碼中的方法
LinkButton lnkdel = new LinkButton();
lnkdel.Text = "Delete";
我想將它傳遞給看起來像這樣的方法:
protected void delline(string id)
{
}
我從代碼隱藏構造一個LinkButton,並且我需要將onclick分配給一個方法,並將其傳遞給一個參數。我有這個至今:將LinkButton的OnClick事件設置爲隱藏代碼中的方法
LinkButton lnkdel = new LinkButton();
lnkdel.Text = "Delete";
我想將它傳遞給看起來像這樣的方法:
protected void delline(string id)
{
}
那麼你不能把它傳遞給那個方法,您需要將click事件委託分配給能夠處理它的方法。
像這樣:如果你想傳遞一個參數
lnkdel.Click += new EventHandler(DynamicClick);
,使用CommandArgument,你會需要一個不同的委託:
public void DynamicClick(object sender, EventArgs e) {
// do something
}
指定像任何事件的點擊事件:
void DynamicCommand(Object sender, CommandEventArgs e)
{
Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument;
}
然後:
lnkDel.Command += new CommandEventHandler(DynamicCommand)
lnkDel.CommandArgument = 1234;
順便說一句,如果你在> = C#3,您還可以使用匿名方法的涼意:
lnkDel.Command += (s, e) => {
Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument;
};
的函數原型爲這個事件是:
protected void lnkdel_OnClick(object _sender, EventArgs _args)
{
LinkButton src = (LinkButton)_sender;
// do something here...
}
與它分配:
LinkButton lnkdel = new LinkButton();
lnkdel.Text = "Delete";
lnkdel.OnClick += new EventHandler(lnkdel_OnClick);
謝謝哥們,我試圖使用第二種方法你張貼作爲目的是該職位是通過一個ID通過刪除。 .OnCommand沒有出現在智能感知列表中,當我嘗試輸入它時,它告訴我LinkButton由於其保護級別而無法訪問? – Chris 2010-10-28 09:08:58
@Chris - 是的,忘記了linkbutton的'bug /功能'。試試這個:'lnkDel.Command + = new CommandEventHandler(DynamicCommand)'或者只是'lnkDel.Command + = DynamicCommand'。 – RPM1984 2010-10-28 09:39:28
感謝哥們,它編譯,但它似乎沒有進入命令 - 我錯過了什麼?我也嘗試了C#3方法,它編譯但是再也沒有進入該方法 – Chris 2010-10-28 15:24:34