1

Web ページでのユーザー コントロールの複数回:

グリッドを持つユーザー コントロールがあり、リスト ボックス グリッドは auto create column = True に設定されています コントロールにクエリを渡し、Page_Load イベントでグリッドにデータを入力します ユーザーはグリッドの行をダブルクリックして選択します これらの行はリストに追加されますボックス (列 1 を値として、列 2 を表示として) ユーザーがリスト ボックスの行をダブルクリックすると、選択から削除されます Plus システムは、グリッド行がリスト ボックスに既に存在する場合、それを無視します

これまでのところ非常に良好で、完全に機能しています。

ツイスト: ページにコントロールが 1 つしかない場合 - すべて問題ありませんが、コントロールが Web ページに複数ある場合 - 期待どおりに機能していません

エラーは、同じ Java スクリプトがユーザー コントロールごとにコピーされているため、最後の 1 つだけが機能しているためです。

以下はコードです...助けてください!

    <script type="text/javascript">

    function list_DblClick(s, e) {
        s.RemoveItem(s.GetSelectedIndex())
    }


    function grid_DblClick(s, e) {
        var sfn = s.GetColumn(0).fieldName + ';' + s.GetColumn(1).fieldName
        s.GetRowValues(s.GetFocusedRowIndex(), sfn, OnGetRowValues);
    }

    //check for duplicate and add new
    function OnGetRowValues(values) {
        var sFound = "False"
        for (var i = 0; i < selList.GetItemCount(); i++) {
            if (values[0] == selList.GetItem(i).value) {
                sFound = "True"
            }
        };
        if (sFound == "False") {
            selList.AddItem(values[1], values[0])
        };
    }
</script>


<br />
<br />
    <dx:ASPxGridView ID="grdSelection" ClientInstanceName="grid" runat="server" Width="100%">
        <ClientSideEvents RowDblClick="grid_DblClick" />
        <SettingsBehavior AllowFocusedRow="True" />
    </dx:ASPxGridView>
<br />
<br />
    <dx:ASPxListBox ID="listSelected" ClientInstanceName="selList" runat="server" Height="250px" Width="100%" >
     <ClientSideEvents ItemDoubleClick="list_DblClick" />
    </dx:ASPxListBox>
<br />
<br />
4

1 に答える 1

0

既にユーザー コントロールを使用しているため、Page.RegisterClientScriptBlock (キー経由) を使用してコード ビハインドに JavaScript コードをロードし、 IsClientScriptBlockRegisteredを使用してその JS が既にロードされているかどうかを確認して ください。この方法で行うと、はるかに効率的であり、関数を n 回ではなく 1 回しか宣言していないため、機能するはずです (これがおそらく、クライアント側でエラーをスローしている理由です)。

http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerclientscriptblock(v=vs.71).aspx

于 2012-11-12T21:29:37.787 に答える