0

OK、ここで頭を殴りました。これについては多くの議論があるようですが、もっと詳しく説明する必要があると思います。ユーザーとの対話を可能にするツリービュー(チ​​ェックボックス)を備えたモーダルダイアログを作成し、ユーザーがダイアログで[OK]をクリックしたときにメインページにフィールドを設定したいと思います。これを行う方法が完全にはわかりません。

ボタンクリックでダイアログを開くことができます。

マークアップ:

<input id="buttonBuildSelect" runat="server" value="Build Select" type="submit" onserverclick="buttonBuildSelect_ServerClick" />
<div id="dialog" title="Expression Builder">
    <p>
        <asp:CheckBox ID="checkBoxOverwrite" runat="server" Text="Overwrite Existing Statement" /></p>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Panel ID="Panel1" runat="server" Style="border: 1px solid black; overflow: auto;
                height: 200px;">
                <asp:Label ID="labelExpressionType" runat="server" Text=""></asp:Label>
                <asp:TreeView ID="popupTreeView" runat="server" CssClass="treeview" ShowLines="true"
                    NodeStyle-CssClass="nodeStyle">
                </asp:TreeView>
            </asp:Panel>
        </ContentTemplate>
    </asp:UpdatePanel>
    <br />        
</div>

脚本:

$(document).ready(function () {

    $(function () {
        $("input:submit").button();
        $("input:submit").click(function () {
            $("#dialog").dialog("open");
            return false;
        });
    });


    $(function () {
        $("#dialog").dialog(
            {
                autoOpen: false,
                modal: true,
                width: 400,
                height: 355,
                resizable: false,
                open: function () {
                    $(this).load("ExpressionBuilder.ascx");
                },
                options: { resizable: false },
                buttons: { "OK": function () {
                    return false
                },
                    Cancel: function () {
                        $(this).dialog("close")
                    }
                }
            }
        )
    });
});

しかし、1)ボタンをクリックする2)データベースからツリービューをロードする3)ダイアログを開く方法がわかりません

私は2つの方法に取り組んできましたが、どちらも機能しません。

方法1:ajaxを使用します。ただし、ツリービューにバインドするためにデータを返す形式と、スクリプトからツリービューをバインドする方法を教えてください。

方法2:ダイアログの内容を別のユーザーコントロールに配置し、ユーザーコントロールをロードするようにダイアログを設定します

どの方法を追求し、その方法を機能させるために何らかの支援が必要か...

ありがとう

編集

クエリビルダーを構築しています。ユーザーは、使用可能なエンティティのドロップダウンからエンティティを選択します。ユーザーは「BuildSelectStatement」ボタンをクリックします。選択したエンティティのツリービューが、エンティティ内のすべてのフィールドの親ノードおよび子ノードとして表示されるダイアログが表示されます。ユーザーは、selectステートメントに含める各フィールドをチェックして、[OK]をクリックします。ダイアログが閉じ、[ステートメントの選択]テキストボックスに、エンティティデータソースESQLステートメントとしてフォーマットされたチェック済みフィールドが入力されます(it。[field1]、it。[field2]など...)

上記のコードはダイアログを開きますが、コンテンツがありません(データをバインドしていないため、データをハードコーディングできますが、使用するエンティティをユーザーが選択できるようにしたいので、データソースを意味しますツリービューのは動的である必要があります。現在、どちらの方法も機能させることができません。エラーはありませんが、ダイアログもありません(ボタンをクリックしても何も起こりません)。

4

1 に答える 1

-1

ソリューション:

スクリプトではなくコード ビハインドでダイアログを作成します。次にスクリプトを登録します。だから、私はメソッドを作成しました:

''' <summary>
''' Open the jquery dialog
''' </summary>
''' <remarks></remarks>
Protected Sub OpenDialog()
    Dim sb As New StringBuilder()
    sb.Append("$(function() { ")
    sb.Append(" $('#dialog').dialog({")
    sb.Append("    modal: true,")
    sb.Append("    width: 400,")
    sb.Append("    height: 355,")
    sb.Append("    show: 'blind',")
    sb.Append("    hide: 'blind',")
    sb.Append("    resizable: false,")
    sb.Append("    buttons: { 'OK': function () {")
    sb.Append("        return false;")
    sb.Append("    },")
    sb.Append("        cancel: function () {")
    sb.Append("            $(this).dialog('close');")
    sb.Append("        },")
    sb.Append("    },")
    sb.Append(" });")
    sb.Append("});")
    Page.ClientScript.RegisterStartupScript(GetType(Page), "myscript", sb.ToString(), True)
End Sub
于 2012-10-09T18:27:14.577 に答える