2008-09-17 4 views
1

AJAXドロップダウンリストを使用してカスタムドロップダウンリストを作成しています。私のドロップパネルの中に私のオプションのためのリンクボタンがあります。リンクボタンクリックイベントがハンドラを実行していません

<asp:Label ID="ddl_Remit" runat="server" Text="Select remit address." 
    Style="display: block; width: 300px; padding:2px; padding-right: 50px; font-family: Tahoma; font-size: 11px;" /> 
<asp:Panel ID="DropPanel" runat="server" CssClass="ContextMenuPanel" Style="display :none; visibility: hidden;"> 
    <asp:LinkButton runat="server" ID="Option1z" Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem" /> 
    <asp:LinkButton runat="server" ID="Option2z" Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem" /> 
    <asp:LinkButton runat="server" ID="Option3z" Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem" />--> 
</asp:Panel> 
<ajaxToolkit:DropDownExtender runat="server" ID="DDE" 
    TargetControlID="ddl_Remit" 
    DropDownControlID="DropPanel" /> 

これはうまくいきます。今私がしなければならないことは、このドロップダウンリストを動的に記入することです。ここに私の最高の試みです:

private void fillRemitDDL() 
{ 
    //LinkButton Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem" 

    DAL_ScanlineTableAdapters.SL_GetRemitByScanlineIDTableAdapter ta = new DAL_ScanlineTableAdapters.SL_GetRemitByScanlineIDTableAdapter(); 
    DataTable dt = (DataTable)ta.GetData(int.Parse(this.SLID)); 
    if (dt.Rows.Count > 0) 
    { 
     Panel ddl = this.FindControl("DropPanel") as Panel; 
     ddl.Controls.Clear(); 
     for (int x = 0; x < dt.Rows.Count; x++) 
     { 
      LinkButton lb = new LinkButton(); 
      lb.Text = dt.Rows[x]["Remit3"].ToString().Trim() + "<br />" + dt.Rows[x]["Remit4"].ToString().Trim() + "<br />" + dt.Rows[x]["RemitZip"].ToString().Trim(); 
      lb.CssClass = "ContextMenuItem"; 
      lb.Attributes.Add("onclick", "setDDL(" + lb.Text + ")"); 
      ddl.Controls.Add(lb); 
     } 
    } 
} 

私の問題は、私はスクリプトを実行するイベントを得ることができないということです!私は、私は、クライアント側となってのアラートの枝をテストしてい

lb.Click += new EventHandler(OnSelect); 

とも

lb.OnClientClick = "setDDL(" + lb.Text + ")"); 

lb.Attributes.Add("onclick", "setDDL(" + lb.Text + ")"); 

を交換するだけでなく、上記のコードを試してみました何もない。

編集: 一般的なアンカーを追加してみたいと思いますが、要素をasp.netコントロールに追加できると思います。また、サーバー側のdivからクライアント側のdivにアクセスすることもできません。イベントで何らかの制御を使わなければならないでしょう。次のように私のsetDLL機能が行く:

function setDDL(var) 
{ 
    alert(var); 
    document.getElementById('ctl00_ContentPlaceHolder1_Scanline1_ddl_Remit').innerText = var; 
} 

はまた、私はちょうど私が何かわからない

lb.Attributes.Add("onclick", "setDDL(" + lb.Text + ")"); 

から

lb.Attributes.Add("onclick", "setDDL()"); 

答えて

1

に関数呼び出し(IEで文字列変数を取り出しましたあなたのsetDDLメソッドはあなたのスクリプトで行いますが、リンクボタンの1つがクリックされた場合には起動する必要があります。参照がないので、.netリンクボタンの代わりに一般的なhtmlアンカーを挿入する方が良いかもしれません。サーバー側の制御を行います。その後、あなたはsetDDLメソッドを使ってデータを処理することができます。さらに、setDDLの呼び出しの中に置いている文字列を引用符で囲むと、リテラル文字列データを引用符なしに置いているため、スクリプトの問題(メソッド+ページエラーを呼び出さないなど)が発生する可能性があります。

0

addはおそらくこのようになります( ''を文字列の周りに追加して;;をjavascript文の最後に追加します)。

lb.Attributes.Add("onclick", "setDDL('" + lb.Text + "');"); 

OR!

リンクボタンにOnClientClick propertyを設定します。

1

私はリテラルを使ってonclicksでアンカータグを作成しましたが、それはうまくいっているようです。どうもありがとう。

関連する問題