2008-10-08 48 views

Trả lời

37

Bạn có thể sử dụng Thuộc tính để thêm lệnh gọi lại trên máy khách.

Tôi không biết bạn có thể làm điều này trên thẻ span, nhưng nếu nó hoạt động bạn có thể thêm 'onclick' bởi lblMyLabel.Attributes.Add("onclick", "foo();");

Nhưng foo(); sẽ cần phải là một bên client javascript chức năng.

System.Web.UI.WebControls.Label KHÔNG có sự kiện máy chủ OnClick. Bạn có thể xem xét sử dụng AJAX nếu bạn muốn gọi lại máy chủ với ví dụ ở trên.

Bạn cũng có thể sử dụng LinkButton như các ngôn ngữ khác. Bạn có thể làm cho nó không giống như một liên kết bằng cách sử dụng CSS, nếu nó chỉ là gạch chân mà bạn quan tâm.

ASPX:

<asp:LinkButton ID="LinkButton1" runat="server" 
    CssClass="imjusttext" OnClick="LinkButton1_Click"> 
LinkButton 
</asp:LinkButton> 

CSS:

a.imjusttext{ color: #000000; text-decoration: none; } 
a.imjusttext:hover { text-decoration: none; } 
5

Bạn có thể làm điều đó trong mã trong Page_Load ví dụ:

void Page_Load(object sender, EventArgs e) 
{ 
     lblMyLabel.Attributes.Add("onclick", 
      "javascript:alert('ALERT ALERT!!!')"); 
} 
1

Tôi nghĩ rằng bạn có thể, nhưng đó là một khách hàng- bên onclick xử lý, không phải phía máy chủ. Nó sẽ khiếu nại về các thuộc tính không được hỗ trợ (hoặc một số như vậy) nhưng tôi nghĩ rằng nó ám một cách chính xác. Nếu bạn muốn xử lý phía máy chủ, tôi nghĩ bạn sẽ cần phải thực hiện một LinkButton.

1

Theo như tôi biết điều đó là không thể. Điều khiển nhãn phát ra <span> phần tử "không thể nhấp vào" ở phía máy chủ. Bạn sẽ cần phải thay thế kiểm soát Nhãn của bạn bằng một LinkButton.

1

Nếu bạn muốn một sự kiện onclick, tại sao bạn không sử dụng một linkbutton, trong đó có sự kiện onclientclick:

<asp:linkbutton id="lblMyLink" onclientclick="lblMyLink_Click" runat="server">My Label</asp:linkbutton> 

Bạn có thể sử dụng CSS để làm cho giao diện liên kết như bất cứ điều gì bạn muốn

+1

Tôi không muốn nó trông giống như một liên kết và tôi không muốn hack liên kết trông giống như văn bản thuần túy bằng CSS, nhưng tôi đoán đó là những gì tôi phải làm. :(Mặc dù cảm ơn. – fuentesjr

10

Câu hỏi của bạn không chỉ rõ nếu bạn muốn nâng cao sự kiện bấm trên máy chủ (VB hoặc C#) hoặc máy khách (javascript.) Nếu bạn đang tìm kiếm sự kiện phía máy chủ, bạn nên sử dụng nút liên kết với css liên kết xuất hiện dưới dạng nhãn. Sau đó, bạn có thể sử dụng sự kiện nhấp chuột phía máy chủ của nút liên kết. Nếu bạn đang tìm kiếm sự kiện nhấp phía máy khách - chỉ cần nhập sự kiện đó vào đánh dấu kiểm soát máy chủ của bạn
asp:label id="MyLabel" runat="server" onclick="javascript:alert('hello');" Text="Click Me";
ASP.NET sẽ phát ra các thuộc tính bổ sung trong đánh dấu html tạo ra.

0

Một lần tấn công khác là sử dụng liên kết hoặc nút ẩn với style = "display: none;" và kích hoạt nhấp chuột vào điều khiển máy chủ từ một hàm javascript trong span.

Something như thế này:

<asp:linkbutton id="lblMyLink" onClick="lblMyLink_Click" runat="server" style="display:none;">My Link</asp:linkbutton> 
<span onclick="document.getElementById('lblMyLink').click();">My Label</span> 
0

bạn luôn có thể tung ra kiểm soát của riêng bạn mà tạo ra một khoảng thời gian, với javascript postback tiêu chuẩn của .net, nhưng như đã nói ở trên sử dụng một linklabel với một lớp CSS sẽ dễ dàng hơn

0

Chỉ để kêu gọi về vấn đề này, Tôi đã sử dụng nhãn trong trang .aspx của tôi chỉ hiển thị trong mẫu Mục dữ liệu của tôi nếu có bản ghi con trong tập dữ liệu.

tôi đã thêm một hàm onclick cho nhãn:

moreOptionsLabel.Attributes.Add ("onclick", string.Format ("toggle_visibility ('{0}')", div.ClientID));

trong tệp .cs của tôi. Bây giờ nó sẽ kiểm soát thẻ div trong trang .aspx để hiển thị hoặc ẩn các bản ghi - vì các điểm onclick trỏ đến một hàm javascript phía máy khách. Lưu ý div.ClientID, điều này làm cho điều này có thể thực hiện được trong một nhà dữ liệu.

Như đã lưu ý ở trên - thẻ span thực sự trở thành chức năng với "onclick". Và vì điều khiển nhãn được hiển thị dưới dạng khoảng thời gian sau khi yêu cầu trang, sử dụng Addtribute.Add ("onclick" .... hoạt động.

Kết quả là hiển thị/ẩn chức năng của dữ liệu khi thực hiện đăng lại. Nếu bạn sử dụng các LinkButton, hoặc các điều khiển simlar - thì việc postback và tải lại trang là không thể tránh khỏi - trừ khi bạn muốn đưa vào một số công cụ Ajax ..

GHI CHÚ: thẻ span sẽ không thể nhấp được trừ khi bạn định kiểu nó với gạch dưới và tay trỏ.

tín dụng đối với ý tưởng này xuất phát từ Will Asrari qua tại http://www.willasrari.com/blog/display-nested-repeaters-and-gridviews-asynchronously/000292.aspx

0

Yo u cần tạo một đối tượng lớp thừa kế từ nhãn và trình xử lý sự kiện onclick sẽ là phương thức của yourslef và sử dụng đối tượng của bạn làm nhãn tùy chỉnh.

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