2011-02-03 3 views
1

클라이언트 측에서이 두 속성의 값을 변경하고 다시 게시 한 후에 서버 측에 반영하는 방법이 있습니까? 나는 그것을 시도했지만 작동하지 않는 것 같습니다. 나는 위임 할 페이지에 버튼 하나를 갖고 싶었고 클라이언트 측에서이 두 개의 인수를 할당했다. 불가능한 것 같습니다. 어떤 생각? 하나들은 여전히이 게시되기 전의 동일하다 게시 후 값을 확인하면 형태단추, 클라이언트 측 CommandName 및 CommandArgs 변경하기

<script type="text/javascript" language="javascript"> 
     $(document).ready(function() { 
      $("#<%=cmd.ClientID %>").click(function() { 
       $(this).attr("CommandName", "do").attr("CommandArgument", "arg2"); 
      }); 

     }); 

    </script> 

에서 "cmd"를이라는 버튼이 가정

.

+0

시도해보고이를 수행하는 데 사용하는 코드의 예를 보여줄 수 있습니까? =) – Rob

+0

@Rob : 코드 예제를 업데이트했습니다. – epitka

+0

은 .NET 4.0을 사용하고 있습니까? 버전이 아니라면? – capdragon

답변

0

나는 코드를 사용해 보았지만 정상적으로 작동했습니다.

그냥 당신이 버튼 OnClientClick은 = 추가하여 다시 게시를 생성하지 않는 것 확인 "false를 반환;"

<asp:Button ID="cmd" runat="server" Text="Button" OnClientClick="return false;"></asp:Button> 

은 또한 브라우저의 "소스보기"의 차이를 볼 수 없습니다. 그러나 DOM에서 변경되었습니다. 직접 확인하기 위해 CONSOLE.LOG을 불을 지르고를 사용하여 추가 enter image description here

편집 :

$("#<%=cmd.ClientID %>").click(function() { 
    $(this).attr("CommandName", "do").attr("CommandArgument", "arg2"); 
    console.log(this); 
}); 

가 CONSOLE.LOG (이) 다음 나에게 준 를 당신이 그것에 대해 생각합니다. 버튼이 포스트 백을 생성하면 페이지가 다시로드되면 버튼이 정상으로 재설정됩니다.

편집 # 2 :

는 내가 서버 측에서 필요 클라이언트 측면에서의 변화가 필요하지 않습니다. 그게 바로 질문의 요점이었습니다. 에서 서버 측의 변경 사항을 확인해야하며 가능하면 이 아닌 것으로 보입니다. - 에피카

오케이 ... 그런 경우. 그것은 불가능합니다. "CommandArgument"및 "CommandName"은 클라이언트에 아무런 의미가 없으며 액세스 할 수 없습니다.

그러나 해결 방법이 있습니다. 그러나 응용 프로그램의 컨텍스트에 따라 유용하지 않을 수도 있습니다.

here과 같은 사용자 지정 속성을 사용해 볼 수 있습니다.

또는 클라이언트 측에서 __doPostBack을 실행하고 코드 뒤에서 __EVENTARGUMENT를 선택할 수 있습니다.

(링크 버튼은 asp.net에 의해 __doPostBack 함수를 생성합니다.이러한처럼)

는 :

<asp:Button ID="cmd" runat="server" Text="Button" 
     OnClientClick="DoPostBack(); return true;" 
     onclick="cmd_Click" ></asp:Button> 


    <asp:LinkButton ID="LinkButton1" runat="server" Visible="false">LinkButton</asp:LinkButton> 

코드 뒤에 : 페이지

<script type="text/javascript" language="javascript"> 
    function DoPostBack() { 
     __doPostBack('cmd', 'thesearemyarguments'); 

    } 
</script> 

protected void cmd_Click(object sender, EventArgs e) 
{ 
    Response.Write(Request.Params["__EVENTARGUMENT"]); 
} 
+0

클라이언트 측에서 변경이 필요하지 않습니다. 서버 측에서 변경해야합니다. 그것이 질문의 핵심이었습니다. 서버 측에서 변경 사항을 확인해야하며 가능한 것은 아닌 것 같습니다. – epitka

+0

제 편집 # 2를 확인하십시오. – capdragon

0
내가 여기에 같은 문제가되었다

, 나는 해결책을 발견은을 사용하는 것이 었습니다 아약스 호출을 사용하여 세션 변수로 설정할 수있는 함수에 내 단추 id를 보냅니다. 정적 호출 내에서 업데이트하려는 ASP 컨트롤에 액세스 할 수 없기 때문에. 아약스 호출이 성공하면 비 정적 클릭 이벤트를 사용하여 세션 변수를 조작하고 컨트롤을 업데이트하는 숨겨진 버튼을 클릭합니다.

내 링크가 리피터 내에서 생성되었으며 집의 다른 방 . 당신이 링크를 클릭하면 리피터에서 생성됩니다

내 링크를 클릭 된 집의 방에 관련된 판매되는 제품보기를 업데이트 할 수있는 다른 중계기가

<a href="#" class="changeroom" data-id="<%#Eval("NodeID")%>" data-toggle="tab"><%#Eval("DocumentName") %></a> 

내 클라이언트 측 방법

$('.changeroom').each(function() { 
    $(this).on('click', function() { 
     var id = $(this).attr('data-id'); 
     var object = { 'sender': id }; 

     $.ajax({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: "/App/Page Templates/FindByRoom.aspx/UpdateRoomID", 
      data: JSON.stringify(object), 
      success: function() { 
       $('#btnID').click(); 
      } 
     });  
    }); 
}); 

btnID는 서버 측 클릭 이벤트

그리고 마지막으로 내 서버 측 m로 간단한 aspButton입니다 법칙

관련 문제