2010-10-28 14 views
13

Tôi đang xây dựng một LinkButton từ codebehind của mình và tôi cần gán phương thức onclick cho một phương thức và truyền tham số với phương thức đó. Tôi có điều này cho đến nay:Đặt sự kiện OnClick của LinkButton thành phương thức trong codebehind

LinkButton lnkdel = new LinkButton(); 
lnkdel.Text = "Delete"; 

Phương pháp tôi muốn vượt qua nó để trông như sau:

protected void delline(string id) 
     { 

     } 

Trả lời

31

Bạn không thể chuyển nó đến đó , bạn cần gán ủy nhiệm sự kiện nhấp chuột cho một phương thức có khả năng xử lý nó.

Như thế này:

public void DynamicClick(object sender, EventArgs e) { 
    // do something 
} 

Gán sự kiện click giống như bất kỳ sự kiện:

lnkdel.Click += new EventHandler(DynamicClick); 

Nếu bạn muốn vượt qua một cuộc tranh cãi, sử dụng CommandArgument, và bạn sẽ cần một đại biểu khác nhau :

void DynamicCommand(Object sender, CommandEventArgs e) 
     { 
     Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument; 
     } 

Và sau đó:

lnkDel.Command += new CommandEventHandler(DynamicCommand) 
lnkDel.CommandArgument = 1234; 

BTW nếu bạn đang ở trên> = C# 3, bạn cũng có thể sử dụng cái lạnh của phương pháp vô danh:

lnkDel.Command += (s, e) => { 
    Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument; 
}; 
+0

Cảm ơn bạn, tôi đang cố gắng để sử dụng phương pháp thứ hai bạn được đăng vì mục đích là bài đăng là chuyển ID qua để xóa. .OnCommand không xuất hiện trong danh sách intellisense, và khi tôi cố gắng gõ nó anyway nó nói với tôi rằng LinkButton là không thể truy cập do mức độ bảo vệ của nó? – Chris

+1

@ Chris - vâng, quên mất 'lỗi/tính năng' đó bằng nút liên kết. thử điều này: 'lnkDel.Command + = new CommandEventHandler (DynamicCommand)' hoặc chỉ 'lnkDel.Command + = DynamicCommand'. – RPM1984

+0

Cảm ơn bạn thân, nó biên dịch nhưng dường như không bao giờ đi vào Tư lệnh - tôi có thiếu gì đó không? Tôi đã thử phương pháp C# 3 là tốt, mà biên dịch nhưng một lần nữa không bao giờ đi vào phương pháp đó – Chris

1

Nguyên mẫu hàm cho sự kiện này là:

protected void lnkdel_OnClick(object _sender, EventArgs _args) 
{ 
    LinkButton src = (LinkButton)_sender; 
    // do something here... 
} 

Gán cho nó với :

LinkButton lnkdel = new LinkButton(); 
lnkdel.Text = "Delete"; 
lnkdel.OnClick += new EventHandler(lnkdel_OnClick); 
Các vấn đề liên quan