【问题标题】:Extjs add grid panel to accordion contentExtjs 将网格面板添加到手风琴内容
【发布时间】:2012-11-01 00:32:52
【问题描述】:

我实际上不确定这是否可能,但无论如何我都会问。我有一组手风琴控件,在每个控件的内容主体中,我需要显示一个网格面板。网格面板需要附加一个点击事件。我尝试简单地创建网格面板并将手风琴的 html 属性设置为它,但这不会产生任何内容。

有什么办法可以实现上述目标吗?

【问题讨论】:

    标签: extjs grid extjs4 accordion


    【解决方案1】:

    这是完全可能的,但手风琴的主体不是放置它的地方。您需要将它添加到手风琴的items: [] 数组中。正文(或 html)只接受 html。 示例:

    http://docs.sencha.com/ext-js/4-1/#!/example/layout/accordion.html

    这个里面有一个网格。

    【讨论】:

      【解决方案2】:

      您不能将 html 内容(由属性插入)与任何其他内容一起使用。如果添加任何itemhtml 属性值将不会设置/覆盖。但可以肯定的是,您可以将任何您想要的东西放入一个手风琴面板中。甚至是网格。但是对于这种情况,基于last question,我建议您将视图引用到网格中。你可以简单地使用ComponentQuery

      点击事件可以通过控制器的control函数来应用。

      为了您的基本理解:

      在 ExtJS 中你很少使用纯 html 代码。在大多数情况下,您使用任何类型的组件。所有都嵌套在 items-array 或 dockedItem-array 中。这些数组中的项目也由布局系统处理。

      一些适用于控制功能的查询示例

      以下this指的是控制器本身。

      您知道网格的 ID(通常您没有这样做)。 ID 由起始 # 标记

      control({'#yourId': {itemclick: this.onItemclick }});
      

      你知道 xtype 并且这种类型只有一个实例。您还可以通过在 xtype 之间使用空格来描述路径。

      control({'grid': {itemclick: this.onItemclick }});
      

      您已将自定义属性设置为网格(您可以通过这种方式引用任何属性)。这个完全兼容上面那个。 我在你的情况下推荐这个

      control({'grid[customIdent=accordionGrid]': {itemclick: this.onItemclick }});
      

      这只是使用 ComponentQueries 的一些方法,还有更多。更详细的解释你应该参考ComponentQuery的sencha API

      还要注意,每个组件都实现了 up()down() 方法,它们也支持 ComponentQueries。

      我忘了说:对于一个控件,查询严格地只需要返回一个结果(只会采用第一个),另一方面,一个 ComponentQuery 可以返回多个结果。

      【讨论】:

      • 感谢您一直以来的帮助。我的网格在添加到手风琴的 items 属性时运行良好。关于事件的主题,您能否提供一个网格项目单击的基本示例?我假设我必须在行级别设置一些属性(我的唯一 ID),然后附加一个事件处理程序 - 它可能驻留在控制器中?
      • @BrynJ 一点也不。您只需要对目标网格进行良好的“描述”。我将编辑我的帖子...
      • 谢谢,这对我来说很好,我可以理解选择器。但是,我可以在控制器中触发事件-也许我很密集-我似乎无法确定我单击了网格中的哪一行-返回给我的函数的对象似乎没有代表行?我也不确定如何设置行标识符 - 因为我只是创建一个 ArrayStore 并将其传递给网格面板创建(我不希望标识符作为行值可见)。我快到了,但只是这最后一个绊脚石。
      • @BrynJ 您将网格作为第一个参数,将记录作为第二个参数返回。你需要这个行做什么?你不能用它做太多......修改记录中可见的内容以及不简单地更改列模型的内容。如果没有人看到 ident 字段,请为其保留模型或将其设置为隐藏。要查看所有可用事件和所有参数,您应该参考 API。如果这无助于提供更多信息,您将尝试使用 clicklistener 存档。
      • 谢谢,我确实设法解决了这个问题。我一直在努力在文档中找到我需要的区域——我想这是 Extjs 的规模和复杂性的一个症状。我想要 id 的原因是将特定内容加载到选项卡中(保存在另一个子视图中) - 我是否以正确的方式进行此操作?我必须说,从我的 php 背景(我使用 CodeIgniter,一个完全不同的 MVC 实现)开始,我发现学习曲线非常陡峭。我有 jQuery 经验,并且也使用过 Appcelerator Titanium,这可能是最接近的并行。抱歉所有新手问题:)
      猜你喜欢
      • 2014-12-17
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多