2012-12-13 18 views
7

Tôi có ba nút mỗi cuộc gọi btn_Clicked trên sự kiện onClick của họ. Trong mã phía sau tôi muốn nhận được ID của nút gây ra postback. Tôi biết tôi có thể chỉ định mỗi nút để gọi một phương pháp khác nhau nhưng tôi muốn tìm hiểu một chút về ASP.Net. Cũng cho tôi biết phương pháp nào hiệu quả hơn? Gọi các phương thức khác nhau trên các lần nhấp nút khác nhau hoặc gọi cùng một phương thức (nếu chức năng của mỗi nút giống nhau).Cách phát hiện nút nào được nhấp vào mã phía sau?

+1

Sử dụng các object sender trong trường hợp xử lý. – ryadavilli

+0

Tìm hiểu mvc thay vì – Jeroen

Trả lời

20

Truyền đối tượng người gửi đến nút và sau đó bạn có thể nhận tất cả các thuộc tính.

Button clickedButton = (Button)sender; 

Đồng thời cho tôi biết phương pháp nào hiệu quả hơn? Gọi các phương thức khác nhau trên các lần nhấp nút khác nhau hoặc gọi cùng một phương thức (nếu chức năng của mỗi nút giống nhau).

Nếu chức năng giống nhau thì tốt hơn nên có một sự kiện duy nhất, vì bạn không phải sao chép mã. Hãy nhớ số DRY principle.

Hãy xem xét ví dụ sau:.

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Button clickedButton = sender as Button; 

    if (clickedButton == null) // just to be on the safe side 
     return; 

    if (clickedButton.ID == "Button1") 
    { 
    } 
    else if(clickedButton.ID == "Button2") 
    { 
    } 
} 
3

Kiểm tra xem các sender đối số của phương thức callback của bạn là tài liệu tham khảo tương tự như các nút bấm của bạn quan tâm đến

Button button1; 
Button button2; 

void OnClick(object sender, RoutedEventArgs args) 
{ 
    Button button = sender as Button; 
    if (button == button1) 
    { 
     ... 
    } 
    if (button == button2) 
    { 
     ... 
    } 
} 
+0

Điều đó thực sự có một chút bất ngờ đối với tôi. Tôi nghĩ rằng == sẽ sử dụng 'Object.equals', mà sẽ kiểm tra nếu họ là cùng một tài liệu tham khảo. Phần nào không chính xác? – ceyko

+0

Có thể thực hành tốt nhất để làm điều đó (và có thể là cần thiết), do đó chỉnh sửa của tôi :) – ceyko

+0

Tôi sẽ tranh luận nếu thực hành tốt nhất hay không, điều gì sẽ xảy ra nếu bạn muốn truy cập ButtonID hoặc một số thông tin khác liên quan đến thuộc tính của nó . Bạn phải bỏ đối tượng vào nút, như bạn đang làm bây giờ – Habib

Các vấn đề liên quan