ComponentArt CallBack コントロールがあります。クライアント側で、ドロップダウンリストが変更されたときにjavascriptを使ってコールバックを行いたいです。JavaScript では、コントロールと関連する ComponentArt.Web.UI.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 に感謝します。これは、私が進むべき方向を示してくれました。