Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Ссылки на разные вкладки в Tab Panel (https://javascript.ru/forum/extjs/40060-ssylki-na-raznye-vkladki-v-tab-panel.html)

zed 23.07.2013 10:22

Ссылки на разные вкладки в Tab Panel
 
Имеется ExtJS Tab Panel Панель с вкладками. Нужно сделать ссылки с разных мест на разные вкладки в этой панели.
Не очень понимаю как это делается. Вроде нужно передавать параметр. Но как это делается и что там откуда берется тоже плохо понимаю.
Буду рада всем комментариям. Изучаю ExtJs около месяца.

skrudjmakdak 23.07.2013 12:43

Цитата:

Сообщение от zed (Сообщение 263727)
Имеется ExtJS Tab Panel Панель с вкладками.

мы очень рады) а код то где?

вот официальная документация
http://docs.sencha.com/extjs/4.2.1/#.../tabs-adv.html

zed 23.07.2013 14:36

Ext.define('Application.components.RequestTabPanel', {
  extend: 'Ext.TabPanel',
  initComponent: function() {
  var component = this;

  var RequestPanel = {
    xtype: 'Application.components.RequestGrid',
    parent: component,
    title: 'Запросы на разъяснение',
    optype: 'request',
    closable: false
  };

  var ResponsePanel = {
    xtype: 'Application.components.RequestGrid',
    parent: component,
    title: 'Ответы на запросы',
    optype: 'response',
    closable: false
  };

  var RejectPanel = {
    xtype: 'Application.components.RequestGrid',
    parent: component,
    title: 'Отклоненные запросы',
    optype: 'rejected',
    closable: false
  };

  Ext.apply(RequestPanel, component.requestGridParams);
  Ext.apply(ResponsePanel, component.requestGridParams);
  Ext.apply(RejectPanel, component.requestGridParams);

  Ext.apply(this, {
    activeTab: 0,
    enableTabScroll:false,
    border: false,
    items: [
      RequestPanel,
      ResponsePanel,
      RejectPanel
    ]
  });
  Application.components.RequestTabPanel.superclass.initComponent.call(this);
  }
});

вкладки сделаны по шаблону одному и тому же Application.components.RequestGrid, его надо приводить или нет? а то сильно длинный.

Вот как открыть ссылкой вкладку №2. У них у все url одинаковый.
Проект сделан на Zend Framwork 1.12.3 и ExtJs точно не знаю какой но больше 4 )

skrudjmakdak 23.07.2013 14:45

хочу сразу огорчить, что такого быть не может:
var ResponsePanel = {
    xtype: 'Application.components.RequestGrid',
    parent: component,
    title: 'Ответы на запросы',
    optype: 'response',
    closable: false
  };

  var RejectPanel = {
    xtype: 'Application.components.RequestGrid',
    parent: component,
    title: 'Отклоненные запросы',
    optype: 'rejected',
    closable: false
  };

вы 3 раза инициализируйте одну переменную.
сделайте функцию и вызывайте ее сколько вам надо:
function getItemTab()
	{
	return {
		xtype: 'Application.components.RequestGrid',
		parent: component,
		title: 'Отклоненные запросы',
		optype: 'rejected',
		closable: false
		};
	}

var RejectPanel1 = getItemTab();
var RejectPanel2 = getItemTab();
var RejectPanel3 = getItemTab();

zed 23.07.2013 15:19

Цитата:

Сообщение от skrudjmakdak (Сообщение 263780)
хочу сразу огорчить, что такого быть не может:

ну да написано как-то непонятно. Но это не мой код работаю над ним неделю. Надо сделать ссылки с другой формы на разные вкладки на этой панели.

skrudjmakdak 23.07.2013 15:40

оно???:
<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
	<script type="text/javascript" src="js/ext-4.2.1.883/ext-all.js"></script>
	<link rel="stylesheet" type="text/css" href="ext-4.2.1.883/resources/css/ext-all.css">
    <script type="text/javascript">
Ext.onReady(function() {

var tabs = Ext.widget('tabpanel',
	{
	renderTo: Ext.getBody(),
	resizeTabs: true,
	enableTabScroll: true,
	width: 300,
	height: 250,
	items: [
		{
		title: 'Tab 1',
		iconCls: 'tabs',
		items: [
			{
			xtype: 'button',
			text: 'click me',
			handler: function()
				{
				tabs.setActiveTab(1);
				}
			}]
		},
		{
		title: 'Tab 2',
		iconCls: 'tabs',
		html: 'Tab Body2222<br/><br/>'
		},
		{
		title: 'Tab 3',
		iconCls: 'tabs',
		html: 'Tab Body3333<br/><br/>'
		}]
	});
	
});
    </script>
  </body>
</html>

zed 23.07.2013 15:52

Тут на вкладке 1 кнопка при нажатии которой становится активной вкладка 2? я правильно понимаю?
У меня другая задача, у меня есть форма и при нажатии например, "количество ответов" должна открываться вкладка № 2 на панели.

Вроде можно передать параметр по ссылке, например ".../tab/2". Но что дальше делать?

skrudjmakdak 23.07.2013 15:58

так?
<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
	<script type="text/javascript" src="js/ext-4.2.1.883/ext-all.js"></script>
	<link rel="stylesheet" type="text/css" href="ext-4.2.1.883/resources/css/ext-all.css">
    <script type="text/javascript">
var openTab;
Ext.onReady(function() {

openTab = function (number)
	{
	tabs.setActiveTab(number);
	}

var tabs = Ext.widget('tabpanel',
	{
	renderTo: Ext.getBody(),
	resizeTabs: true,
	enableTabScroll: true,
	width: 300,
	height: 250,
	items: [
		{
		title: 'Tab 1',
		iconCls: 'tabs',
		html: '<a href="#" onclick="openTab(1);">открыть вторую вкладку, епта!!</a><br/><br/>'
		},
		{
		title: 'Tab 2',
		iconCls: 'tabs',
		html: 'Tab Body2222<br/><br/>'
		},
		{
		title: 'Tab 3',
		iconCls: 'tabs',
		html: 'Tab Body3333<br/><br/>'
		}]
	});
	
});
    </script>
  </body>
</html>

zed 23.07.2013 16:20

я наверное не понятно объяснила задачу.
у меня есть форма http://gyazo.com/a67a5159032da950087bd84d7c907c28 скриншот части формы. При нажатии на "Получено ответов от поставщика" должна открываться панель http://gyazo.com/3c732aba27ceec42cee675fa57745e36 вторая вкладка "Ответы на запросы"
А url у всех трех вкладок одинаковый #com/procedure/requestappliclist

skrudjmakdak 23.07.2013 16:32

ии?? суть та осталась.
есть форма. там есть "Получено ответов от поставщика", оборачивайте в тэг <a> навешивайте событие клик. при клике показывается ваша панель: name_tabpanel.show(); и открывается нужная вкладка как я уже показывал: name_tabpanel.setActiveTab(number);


Часовой пояс GMT +3, время: 20:21.