глобальный DOM элемент
От: mYziK  
Дата: 20.01.11 18:51
Оценка:
Привет всем, наткнулся на проблему, никак не могу решить.

Ситуация такая:
Есть несколько HTML страниц, на некоторых из них присутствует одинаковая таблица (данные в ней так же общие).
При переходе на другую страницу приходится заново заполнять эту таблицу, что не есть хорошо (строки содержат дополнительные элементы, модифицируемые при создании в зависимости от данных).

Решил грузить один раз эту таблицу и вставлять в нужные страницы. Для этого наследовался от dom::element и добавил функции создания и вставки:

//Первая страница создает list из html - ресурса
void Create(HELEMENT hContainer)
    {
        htmlayout::dom::element container = hContainer;  //<div> куда вставляем таблицу
        PBYTE pb;
        DWORD cb;
        if (GetHtmlResource(L"list", pb, cb, _Module.GetModuleInstance()))
        {
            container.set_html(pb, cb, SIH_INSERT_AT_START);
            HELEMENT list = container.get_element_by_id(L"list");
            set(list);

            //сохраним шаблон для строки
            htmlayout::dom::element field = child(1);
            htmlayout::dom::element row = field.child(0);
            row_template = row.clone();
            row.destroy();
        }
    }
//Следующие таблицы передают элемент, в который нужно вставить уже созданную таблицу
void Attach(HELEMENT hContainer)
    {
        htmlayout::dom::element container = hContainer;  //<div> куда вставляем таблицу
        container.append(*this);        
    }



HTML таблицы:

<table id="list">
    <thead>
        <tr>
            <th><strong>Col 1</strong></th>
            <th><strong>Col 2</strong></th>
            <th><strong>Col 3</strong></th>
            <th><strong>Col 4</strong></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>User 1</td>
            <td>Russia</td>
            <td>
                <select class="actionList" type="select-dropdown">
                    <caption>3</caption>
                    <div buttons>
                        <widget type="button" role="dropdown"></widget>
                    </div>
                    
                    <popup id="popup">
                        <option value="0">do somethink</option>
                        <option value="1">do somethink</option>
                        <option value="2">do somethink</option>
                    </popup>
                </select>
            </td>
            <td>comment</td>
        </tr>
    </tbody>
</table>


Проблема в следующем:
Таблица грузится, элементы добавляются, все хорошо, но при переходе на другую страницу содержимое таблицы либо вообще пропадает, либо элементов становится меньше (от случая к случаю).
Страницы грузятся view с помощью


        if(GetHtmlResource(name.c_str(), pb, cb, hInst))
        {
            m_curHandler->Hide();
            HTMLayoutLoadHtml(this->m_hWnd, pb, cb);

            m_curHandler = pH;
            m_curHandler->Show(); //здесь вызывается Attach() для таблицы, либо Create для первой страницы.
            return TRUE;
        }


Не знаете в чем может быть проблема? Или как сделать общий элемент для всех страниц?
//htmlayout dom
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.