2010-11-25 5 views
0

ComponentArt 콜백 컨트롤이 있습니다. 클라이언트 측, 드롭 다운 목록이 변경되면 javascript를 사용하여 콜백을 수행하려고합니다. 자바 스크립트에서 컨트롤과 연관된 ComponentArt.Web.UI.CallBackEventArgs를 명시 적으로 전달하고 싶습니다.콜백의 javascript 함수에서 ComponentArt CallBackEventArgs를 명시 적으로 전달하는 방법은 무엇입니까?

다음은 큰 규모로 달성하려는 노력의 기본 구현입니다.

명시 적으로 ComponentArt.Web.UI.CallBackEventArg를 전달하려면 javascript에 무엇을 넣어야합니까? 이것이 가능하다면, 관심있는 부분은 WHAT_DO_I_PUT_HERE로 표시됩니다.

ASCX 컨트롤이 포함되어 있습니다

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="foo.ascx.cs" Inherits="WebPlugins.foo" %> 
<%@ Register TagPrefix="ComponentArt" Namespace="ComponentArt.Web.UI" Assembly="ComponentArt.Web.UI" %> 

<script language="javascript" type="text/javascript"> 
    function changeDDL(sender) { 
     alert("This alert pops up. No problems here."); 
     fooClbk.Callback(sender, WHAT_DO_I_PUT_HERE); 
    } 
</script> 

<ComponentArt:CallBack id="fooClbk" runat="server" OnCallback="fooClbk_Callback"> 
    <Content> 
     <asp:Label ID="lblmyDDL" AssociatedControlID="myDDL" runat="server" Text="Choose an option: "></asp:Label> 
     <br /> 
     <asp:DropDownList ID="myDDL" runat="server"> 
      <asp:ListItem Value="DEFAULT" Text="The Default Value"></asp:ListItem> 
      <asp:ListItem Value="ONE" Text="First!"></asp:ListItem> 
      <asp:ListItem Value="TWO" Text="Runner up"></asp:ListItem> 
     </asp:DropDownList> 
    </Content> 
    <LoadingPanelClientTemplate> 
     <p>Refreshing Rate Information...</p> 
    </LoadingPanelClientTemplate> 
</ComponentArt:CallBack> 

ASCX.CS의 코드 숨김에는 다음이 포함

//Some includes... 

namespace WebPlugins 
{ 
    public partial class foo : System.Web.UI.UserControl 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      initializeDDLEvt(); 
      //Initialize some other stuff... 
     } 

     private void initializeDDLEvt() 
     { 
      /* Register client events for DDL */ 
      myDDL.Attributes.Add("onChange", "changeDDL(this);"); 
     } 

     protected void fooClbk_Callback(object sender, ComponentArt.Web.UI.CallBackEventArgs e) 
     { 
      //Render some new HTML using the ComponentArt.Web.UI.CallBackEventArgs 
     } 
    } 
} 

편집 : 여기에 무슨 일이 있었는지 내 기본적인 이해가 잘못되었습니다. 나는 아래의 코멘트에서 내가 잘못 들어간 부분에 대한 세부 사항을 제공했다. componentart 포럼 링크에 대해 @jalpesh에게 감사드립니다. 이것은 제가 갈 필요가있는 방향으로 나를 지적했습니다.

+0

나는 당신의 질문을 이해할 수 없다고 생각합니다. 콜백 메소드로 무엇을하려고합니까? –

+0

@ Sergey 내가 할 수없는 일을하려고하고있다. 나는 상세한 설명을 덧붙인다. – Peach

답변

0

이 질문에 대한 빠른 대답 : 정확히 어떻게 질문을 표현할 수 있습니까? 보다 상세

는 :

가정은 자바 스크립트 기능을 명시 적으로 콜백 발신자 이벤트 인수를 전달한다. 그렇지 않다. 대신 javascript 함수는 이벤트 인수에 번들로 묶인 일부 매개 변수를 전달합니다.

보낸 사람 (이 경우 드롭 다운 목록 컨트롤)과 CallBackEventArgs는 암시 적으로 fooClbk_Callback 메서드에 전달됩니다. 나는 이것이 부분적으로는 the difference between functions and methods의 오해라고 생각합니다. 기본적으로

이 :

function changeDDL(sender) { 
    alert("This alert pops up. No problems here."); 
    fooClbk.Callback(sender, WHAT_DO_I_PUT_HERE); 
} 

실제로 이런 걸해야한다 : 자바 스크립트 함수에서 전달

function changeDDL(aControl) { 
    alert("This alert pops up. No problems here."); 
    fooClbk.Callback(aControl.options[aControl.selectedIndex].value); // Or whatever other params 
} 

params 객체를 파라미터는 다음과 같이 콜백 메서드 내에서 액세스 할 수 있습니다

protected void fooClbk_Callback(object sender, ComponentArt.Web.UI.CallBackEventArgs e) 
{ 
    //Do Some stuff 
    string myVal = e.Parameters[0]; 
    // Do something with the chosen myVal. 
} 
관련 문제