2012-02-15 36 views
10

ASPX MÃthực thi mã serverside trên div nhấp chuột

<div id="c" runat="server" onclick="loadContentFamily" onmousedown="loadContentFamily" rel="divUpdatePanel" >Family</div> 

serverside Mã

Public Sub loadContentFamily(ByVal PageName As String) 
     MsgBox("") 
     PageName = "Family" 
     Dim _con As New SqlConnection(ConfigurationManager.ConnectionStrings("LeaveDBConnectionString").ConnectionString) 
     Dim _da As New SqlDataAdapter("SELECT PageHeader,PageContent FROM PageKeeper WHERE PageName='" & PageName & "'", _con) 
     Dim _table As New DataTable 

     Try 
      _con.Open() 
      _da.Fill(_table) 
      _con.Close() 
      _con.Dispose() 
      With _table.Rows(0) 
       h4header.InnerText = .Item(0) 
       divUpdatePanel.InnerHtml = .Item(1) 
       Me.Title = .Item(0) 
      End With 

     Catch ex As Exception 
      MsgBox(ex.Message) 
      divUpdatePanel.InnerText = "No Data Found" 
     Finally 
      _con.Close() 
      _con.Dispose() 
     End Try 
    End Sub 

VẤN ĐỀ:

Khi tôi bấm vào div nó không thực hiện ServerSide Code ... tại sao ?? Bất kỳ trợ giúp đánh giá cao.

Trả lời

13

Bạn cần phải tăng sự kiện máy chủ chứ không phải sự kiện của khách hàng (và có vẻ như bạn muốn thực hiện điều đó một cách không đồng bộ).

This article giải thích cách đính kèm đoạn mã vào phần tử ứng dụng khách (như DIV) và gây ra một postback không đồng bộ.

Một cách nhanh chóng và bẩn khác để hoàn thành việc này là sử dụng nút máy chủ ẩn. Nút có thể được đặt bất cứ nơi nào mong muốn (chẳng hạn như bên trong một UpdatePanel) và nó cho phép sử dụng đúng vòng đời trang ASP.

<asp:Button runat="server" id="btnPostback" style="display:none" onclick="serverEventHandler" /> 

<div onclick="document.getElementById('<%= btnPostback.ClientID %>').click()">Clickable DIV</div> 
3

Check-out bài này raise postback event from div tag

Yours sẽ giống như

<div id="c" onclick="__doPostBack('loadContentFamily','')"> 
Family 
</div> 

Edit:

Hãy thử một cái gì đó giống như

<Triggers> 
     <asp:AsyncPostBackTrigger ControlID="c" EventName="Click" /> 
    </Triggers> 

Nó giải thích tốt hơn ở đây Partial postback with Javascript

+0

tôi có thể thêm phần này vào phần trình kích hoạt của bảng cập nhật không? Nó không hiển thị danh sách trình kích hoạt. – user1150440

+0

div này nằm trong bảng cập nhật nhưng nhấp vào nó sẽ tải lại toàn bộ trang. – user1150440

0

Cách khác là gọi hàm Javascript và sau đó thực hiện cuộc gọi phương thức trang. trả về dữ liệu dưới dạng xml & hiển thị trong div.

1

Tôi khuyên bạn không nên sử dụng điều khiển UpdatePanel, nhưng jQuery. Bạn có thể tìm thấy ví dụ here

1

quấn div của bạn trong điều khiển LinkButton và gọi hàm tải của bạnContentPhương pháp gia đình trên sự kiện OnClick của LinkButton. Điều này làm việc cho tôi

+0

plz xin lỗi vì tiếng anh nghèo của tôi :) – n3verLieMe

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