如何使用jQuery Layout UI添加内部North面板?

时间:2016-08-20 20:21:22

标签: javascript jquery css jquery-ui layout

我来了一个页面管理插件,即jQuery UI Layout。我想在我正在开发的应用程序中使用它。

我正在尝试创建一个包含3个面板的页面。在西方,我需要添加一个占据页面全高的面板。我还需要添加一个北面板,它将从" west panel"结束,一直到屏幕的东侧。最后,我想在西面板的中间添加一个面板,它将占据页面的剩余部分。

换句话说,我正在尝试使用jQuery UI Layout进行以下布局。

enter image description here

这就是我所做的



	$(function () {
		$('body').layout({
			applyDefaultStyles: true,
			west__size: 200
		});
	});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script src="http://layout.jquery-dev.com/lib/js/jquery.layout-latest.js"></script>

<link href="http://layout.jquery-dev.com/lib/css/layout-default-latest.css" rel="stylesheet"/>

<div class="ui-layout-north ui-layout-pane ui-layout-pane-north">
		NORTH
	</div>
	<div class="ui-layout-west">
		WEST
	</div>
	<div class="ui-layout-center">
		MIDDLE
	</div>
&#13;
&#13;
&#13;

但是,这使得北面板跨越了整个页面和西面板。

如何修复它并获得我上面的外观?

3 个答案:

答案 0 :(得分:0)

当你询问“内部北面板”时,你有点回答了自己的问题。你需要的是一个只包含西面和中间窗格的外部布局。然后在该中心窗格内添加一个仅包含北窗和中间窗格的内部布局。那会给你你想要的......

<div class="ui-layout-west"> WEST </div>
<div class="ui-layout-center">
    <div class="ui-layout-north"> NORTH </div>
    <div class="ui-layout-center"> CENTER </div>
</div>

答案 1 :(得分:0)

我终于找到了问题所在。要做到这一点,我必须给中心div一个新的ID并创建一个layout的新实例,所以我有一个在另一个内部的2个单独的实例

这就是诀窍

<script>
    $(function () {
        $('#mainContainer').layout({
            applyDefaultStyles: true,
            west__size: 300
        });

        $('#innderContainer').layout({
            applyDefaultStyles: true
        });

    });
</script>

<div id="mainContainer" class="ui-layout-center">

    <div class="ui-layout-west">
        West
    </div>

    <div class="ui-layout-center" id="innderContainer">

        <div class="ui-layout-pane-south">
            SOUTH
        </div>

        <div class="ui-layout-north">
            North
        </div>

        <div id="centerInnerCenterPane" class="ui-layout-center">
            Center
        </div>

    </div>

</div>

答案 2 :(得分:0)

是的,你还需要 init 内部布局。因为我以为你知道,我以前没有显示过这些代码。但是,有很多方法可以不需要添加元素ID,例如......

  1. 布局接受任何 jQuery选择器,所以你可以这样做:

    // change the global default to avoid repeating
    $.layout.defaults.panes.applyDemoStyles = true;
    
    $('body').layout({
        west__size: 300
    }).panes.center.layout();
    
  2. 或者您可以通过返回的布局对象访问外部布局窗格:

    $('body').layout({
        applyDemoStyles: true,
        west__size: 300,
        center__children: {
            applyDemoStyles: true,
            north__size: 150
        }
    });
    
  3. 或者使用&#34;孩子&#34;用于指定嵌套布局的选项:

    public static void sql_Reader_To_Type(Type t, SqlDataReader r)
        {
    
            List<object> ret = new List<object>();
            while (r.Read())
            {
    
                FieldInfo[] f = t.GetFields();
                object o = Activator.CreateInstance(t);
                for (int i = 0; i < f.Length; i++)
                {
                    string thisType = f[i].FieldType.ToString();
                    switch (thisType)
                    {
                        case "System.String":
    
                            f[i].SetValue(o, Convert.ToString(r[f[i].Name]));
                            break;
                        case "System.Int16":
                            f[i].SetValue(o, Convert.ToInt16(r[f[i].Name]));
                            break;
                        case "System.Int32":
                            f[i].SetValue(o, Convert.ToInt32(r[f[i].Name]));
                            break;
                        case "System.Int64":
                            f[i].SetValue(o, Convert.ToInt64(r[f[i].Name]));
                            break;
                        case "System.Double":
                            // Console.WriteLine("converting " + f[i].Name + " to double");
                            double th;
                            if (r[f[i].Name] == null)
                            {
                                th = 0;
                            }
                            else
                            {
                                if (r[f[i].Name].GetType() == typeof(DBNull))
                                {
                                    th = 0;
                                }
                                else
                                {
                                    th = Convert.ToDouble(r[f[i].Name]);
                                }
                            }
                             f[i].SetValue(o, th); 
                            break;
                        case "System.Boolean":
                            f[i].SetValue(o, Convert.ToInt32(r[f[i].Name]) == 1 ? true : false);
                            break;
                        case "System.DateTime":
                            f[i].SetValue(o, Convert.ToDateTime(r[f[i].Name]));
                            break;
                        default:
                            throw new Exception("Missed data type in sql select in getClassMembers class line 73");
    
                    }
                }
                ret.Add(o);
                if (ret.Count == 50000)
                {
                    //process data
                    ret.Clear();
                }
    
            }
            if (ret.Count > 0)
            {
                //processdata
            }
    
    
        }
    
    Create Table (firstName varchar(25), lastName varchar(50), birthday date)
    
    class person{public string firstName; public string lastName; public DateTime birthday}
    
    sql_Reader_To_Type(typeof(person), com.ExecuteReader());
    
  4. 还有更多方法,例如在容器元素上添加布局选项作为数据布局属性;但上面的例子已经足够了!

    我建议在专用论坛中询问布局问题。您可能会得到更快的答案,而您的问题可能会帮助处理类似情况的其他人。