2014-09-25 2 views
0

데이터가 채워지는 listview가 있습니다. 이 목록보기는 Preferences.aspx라는 페이지 안에있는 사용자 정의 컨트롤 안에 있습니다. 오늘 나는 서버에 다시 게시하는 것을 포함하는 각 행의 의미에서 click 이벤트를 처리하고 있습니다.포스트 백이없는 클릭 이벤트 처리

사용자에게 개별적으로 표시해야하는 추가 설정 그룹이 있으므로 이제 Preferences.aspx에 다른 사용자 컨트롤을 추가해야합니다. 새 사용자 정의 컨트롤을 페이지의 별도 탭에 추가했습니다. 이 새로운 탭은 사용자가 Preferences.aspx에 도착했을 때 가장 먼저 보여야합니다.

이제 사용자가 두 번째 탭 (listview가있는 사용자 정의 컨트롤)으로 이동하여 행을 클릭하면 다시 게시가 발생합니다. 그러면 사용자가 첫 번째 탭 (새로 추가 된 사용자 정의 컨트롤)에 놓입니다.

그래서 어떻게하면 다시 게시 할 필요없이 행에서 클릭 이벤트를 얻을 수 있습니까?

어떤 아이디어 나 제안도 환영합니다. 나는 C#으로 Asp.Net에서 일하고 있습니다.

코드는 상기 사용자 컨트롤 내에

표식 :

<asp:TableRow runat="server" id="trVisitor" CssClass='<%# GetRowClass() %>' > 

        <asp:TableCell ID="tdPicture" runat="server" Width="10" onclick='<%# GetClickPostBack(Container.ItemIndex) %>'> 
         <div style="margin-top:1px;"> 
          <asp:Image ImageUrl=' <%# Page.ResolveUrl("~/" + Eval("Visitor.StatusImageUrl")) %>' visible='<%# historyFlag ? false : true %>' runat="server"/> 

          </div> 

        </asp:TableCell> 

... 등등

마크 업 내부 Preferences.aspx :

<ABC:ListControl runat="server" ID="visitorListControl" CanSelect="true" IsMine="true" Recurring="false" OnVisitorSelected="ListControl_VisitorSelected" /> 

코드 뒤에 :

protected string GetClickPostBack(int itemIndex) 
    { 
     if (CanSelect) 
      //return 0.ToString(); 
      return "javascript: " + Page.ClientScript.GetPostBackEventReference(this, VisitorRowPrefix + itemIndex) + "; return false;"; 
     else 
      return string.Empty; 

    } 
    public void RaisePostBackEvent(string eventArgument) 
    { 
     if (eventArgument.StartsWith(VisitorRowPrefix)) 
     { 
      HandleRowClick(Convert.ToInt32(eventArgument.Substring(VisitorRowPrefix.Length))); 
     } 
    } 

    private void HandleRowClick(int index) 
    { 
     int CmgVisitorId = Constants.NotConfigured; 
    // bool IsHistoricVisitor = false; 
     // Visitor HistoricVisitor = new Visitor(); 
     // Mark only the clicked row 

... 등등. 2 개 가능한 방법으로 그들의 기본 동작 (포스트 백) 자바 스크립트/jQuery를 사용하여, 방지 그리드 버튼의 클릭 이벤트에

+0

이벤트 코드가 있습니까? – ZoomVirus

+0

karl sweeney : 내 질문의 정연한 버전에 코드 하이라이트를 추가했습니다. – sywa08

+0

' 컨트롤을 사용할 수 있습니까? 내가 너를 올바르게 이해하고 있다면, 이것을 사용하는 것이 좋다. – Volearix

답변

2

후크 업 :

  1. return false;
  2. e.preventDefault (jQuery를 전용)

예 (jQuery를 사용)

$('.button').click(function(event){ 
     event.preventDefault(); 
     //Write your client-side logic here 
}); 

설명 :이 메서드를 호출하면 이벤트의 기본 동작이 트리거되지 않습니다.

0

문제를 제대로 이해하고 있다면 업데이트 패널을 사용해보십시오. Check out the documentation here.

<asp:UpdatePanel runat="server"> 
    <ContentTemplate> 
     <asp:TableRow runat="server" id="trVisitor" CssClass='<%# GetRowClass() %>' > 
      <asp:TableCell ID="tdPicture" runat="server" Width="10" onclick='<%# GetClickPostBack(Container.ItemIndex) %>'> 
       <div style="margin-top:1px;"> 
        <asp:Image ImageUrl=' <%# Page.ResolveUrl("~/" + Eval("Visitor.StatusImageUrl")) %>' visible='<%# historyFlag ? false : true %>' runat="server"/> 
       </div> 
     </asp:TableCell> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

고맙습니다. 두 가지가 있습니다. 하나는 이미 업데이트 패널 안에 있습니다. 둘째, 업데이트 패널을 사용하면 게시 이벤트없이 클릭 이벤트가 발생하는 것을 어떻게 방지 할 수 있습니까? 미안하지만 내 질문과 내가 공유 한 링크 사이에 연결을 찾을 수 없습니다. 부분 업데이트를하기 위해 업데이트 패널을 사용하는 방법을 알려줍니다. – sywa08

관련 문제