2010-09-30 24 views
8

nút liên kết của tôi -cách liên kết hàm javascript với sự kiện OnClientClick với Eval?

<asp:LinkButton runat="server" ID="lbtnEdit" Text="edit" OnClientClick="javascript:msgDisp('<%# Eval(LocationId).toString() %>')" /> 

và msgDisp javascript là-

<script type="text/javascript" language="javascript"> 
    function msgDisp(lid) {    
     alert(lid); 
    } 
</script> 

nhưng nó không được giiving LocationId trong pop nhưng toàn bộ chuỗi <% # ......%> là comin trong tin nhắn popup. Làm cách nào tôi có thể vượt qua các giá trị Đánh giá trong javascript.

+0

Nút liên kết trong điều khiển dữ liệu chưa? Nếu không, bạn cần phải gọi 'lbtnEdit.DataBind()'. –

Trả lời

12

Bạn có thể tạo toàn bộ nội dung của OnClientClick dưới dạng chuỗi trong dấu ngoặc đơn và nó sẽ xuất như bạn đang mong đợi.

<asp:LinkButton runat="server" ID="lbtnEdit" Text="edit" 
    OnClientClick='<%# "msgDisp(" + Eval("LocationId") + ");" %>' /> 

Đây là giả LocationId là một giá trị number- không có dấu ngoặc kép để quấn giá trị của mình khi nó ám, vì vậy xuất ra cái gì đó như msgDisp(hello); sẽ phá vỡ. Tôi không biết làm thế nào để giải quyết điều đó theo cách này, vì vậy nếu bạn phải làm điều đó tôi sẽ khuyên bạn nên thiết lập bên máy chủ OnClientClick trong sự kiện ItemDataBound. Đây là những gì nó muốn nơi cha mẹ là một điều khiển Repeater.

protected void notesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    MyClass item = (MyClass)e.Item.DataItem; 
    LinkButton lbtnEdit = (LinkButton)e.Item.FindControl("lbtnEdit"); 
    lbtnEdit.OnClientClick = string.Format("msgDisp('{0}');", item.LocationId); 
} 
+0

nếu bạn muốn báo giá xung quanh nó như trong 'msgDisp ('hello');' thì bạn có thể sử dụng thực thể HTML như: 'OnClientClick =' <% # "msgDisp ('" + Eval ("LocationId") + "') ; " %> ''. –

2

Nếu bạn đang nhận được thẻ biểu hiện ràng buộc của bạn (<% # ...%>) trả lại trong đánh dấu, nó có nghĩa là bạn LinkButton không được khởi tạo trong một container ràng buộc. Một thùng chứa ràng buộc có thể được, như @ lincolnk đã chứng minh, một mục Repeater hoặc GridView, một ô Lịch, v.v. Ngoài ra, bạn không cần phải thêm tiền tố vào cuộc gọi hàm của bạn với "javascript:". Giá trị của thuộc tính OnClientClick được hiển thị dưới dạng trình xử lý của sự kiện của neo trên sự kiện.

2

Nhìn khắp mọi nơi trên mạng. Mọi người đều nói sử dụng CodeBehind. Xem giải pháp của tôi, hoạt động ngay cả khi datavalue của tôi có một trích dẫn duy nhất trong nó như O'Neal. Điều này sẽ không hoạt động nếu mục dữ liệu của bạn chứa các dấu ngoặc kép. Nhưng làm việc cho những gì tôi cần nó để làm mà đã được thông qua trong tên của một người. Lưu ý các dấu gạch chéo ngược bên trong cuộc gọi cảnh báo.

OnClientClick="<%#string.Format(&quot;alert(\&quot;{0}\&quot;); return false; &quot;, Eval(&quot;NAME&quot;))%>"** 
0

Tôi muốn cảm ơn lincolnk vì câu trả lời của anh ấy. Tôi hiện đang giúp xây dựng một mạng xã hội mới cho googam.com. Tôi đã được tìm kiếm một vài ngày cho một giải pháp để xem hồ sơ của người dùng, trong một datalist, trong một hộp thoại jquery phương thức popup. Đặt nút liên kết OnClientClick trong sự kiện ItemDataBound giải quyết vấn đề chuyển id người dùng đến hàm JQuery để mở điều khiển người dùng acsx trong cửa sổ bật lên.

jQuery(document).ready(function() { 
     var mydiv = jQuery("#mydialog").dialog({ 
      autoOpen: false, 
      resizable: false, 
      modal: true, 
      width: '500', 
      height: '400' 
     }).css("font-size", "0.8em"); 
    }); 

    function ShowPopup(uid) { 
     var mydiv = jQuery("#mydialog") 
     //alert(uid) 
     // Load the content using AJAX 
     mydiv.load('Profile.aspx?id=' + uid); 
     // Open the dialog   
     mydiv.dialog('open'); 
    } 

//////////////

Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As DataListItemEventArgs) 
    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then 
     Dim imageControl = TryCast(e.Item.FindControl("Image1"), Image) 
     Dim Uid As String = imageControl.ImageUrl 

     Dim ProfileBtn As LinkButton = TryCast(e.Item.FindControl("ProfileButton"), LinkButton) 
     ProfileBtn.OnClientClick = String.Format("ShowPopup('{0}');return false;", Uid) 

    End If 
End Sub 
1

Bạn có thể làm như OnClick =' <% # "msgDisp (" + Eval ("LocationId") + ");" %> '

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