0

好的,在这里打我的头。似乎有很多关于这个的讨论,但我认为我需要更详细地分解它。我想创建一个带有允许一些用户交互(复选框)的树视图的模式对话框,然后当用户在对话框上单击“确定”时在主页上设置一个字段。不完全确定如何做到这一点。

我可以通过单击按钮打开对话框,没问题。

标记:

<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)打开对话框

我一直在研究两种方法,但都无法正常工作。

方法一:使用ajax。但是,我以什么格式返回数据以绑定到树视图以及如何从脚本绑定树视图。

方法二:将对话框的内容放在单独的用户控件中,然后设置对话框加载用户控件

采用哪种方法,然后需要一些帮助才能使该方法发挥作用...

谢谢

编辑

我正在构建一个查询生成器。用户从可用实体的下拉列表中选择实体。用户单击“构建选择语句”按钮。将出现一个对话框,其中包含选定实体的树视图作为实体中所有字段的父节点和子节点。用户检查他们希望包含在 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 回答