2

リピーター内にAutoCompleteExtender AjaxControlToolkit コントロールがあり、Web サービスから名前と値を取得する必要があります。オートコンプリート フィールドには名前を格納する必要があり、値を格納する必要がある隠しフィールドがあります。リピーターの外でこれを行おうとすると、通常、イベントOnClientItemSelectedに似た javascript 関数を呼び出します

function GetItemId(source, eventArgs)
{
   document.getElementById('<%= ddItemId.ClientID %>').value = eventArgs.get_value();
}

ただし、値はリピーターのコントロールに保存する必要があるため、javascript関数がコンポーネントに「到達」して値を保存するには、別の方法が必要です。

4

3 に答える 3

1

私が問題を正しく理解していれば、通常どおりに実行できるはずですが、ClientId を埋め込む代わりに、'source' 引数を使用してください。これにより、更新するコントロールにアクセスできるようになります。

于 2009-03-23T11:05:16.297 に答える
0

リピーターを使用しているので、OnItemDataBound関数を配線することをお勧めします...

<asp:Repeater id = "rptResults" OnItemDataBound = "FormatResults" runat = "server">

<ItemTemplate>

<asp:PlaceHolder id = "phResults" runat = "server" />

</ ItemTemplate>

</ asp:リピーター>

次に、背後のコードで次のようなものを使用します

`Private Sub FormatResults(ByVal sender As Object、ByVal e As RepeaterItemEventArgs)

Dim dr As DataRow = CType(CType(e.Item.DataItem、DataRowView).Row、DataRow)'を使用すると、行exにバインドされているすべてのデータにアクセスできます。dr( "ID")。ToString

Dim ph As PlaceHolder = CType(e.Item.FindControl( "phResults")、PlaceHolder)

'プログラムでAutoCompleteExtenderを作成し、プロパティを設定します

'目的のJavaScriptを起動するボタンをプログラムで作成します

'「ph.Controls.Add(ctrl)」を使用して、PlaceHolderにコントロールを追加します

終了サブ`

出来上がり

于 2009-03-05T20:36:49.117 に答える