Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DataSource грида при postback / 16 сообщений из 16, страница 1 из 1
13.07.2006, 02:00
    #33849578
ePilgrim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Используется ASP.Net 2.0
есть страница, на которой есть грид. при загрузке страницы ининциализируется объект.
определенному свойству объекта устанавливается значение — ссылка на грид.
вызывается метод в объекте, который инициализирует DataSource грида.

default.apsx:

protected CMyObject MyObject;

    protected void Page_Load(object sender, EventArgs e)
    {        
        if (!IsPostBack)
        {            
            MyObject = new CMyObject(); 
            MyObject = (ASPxGrid)PreviousPage.FindControl("dgGrid");
            MyObject.SetObj();
        }
    }

после работы с данными через грид пользователь нажимает кнопку,
у которой установлен PostBackUrl на другую страницу. на загрузке второй странице
ищу котрол следующим образом:

second.apsx:

protected void Page_Load(object sender, EventArgs e)
{

        {
            if (PreviousPage != null)
            {
                // Получаем объекты отправленной формы 
                ASPxGrid grid = (ASPxGrid)PreviousPage.FindControl("dgGrid");
                
            }
        }
}

в результате грид найден, но DataSource у него равен null.

почему datasource грида равен null? как получить данны из грида после работы пользователя?
...
Рейтинг: 0 / 0
13.07.2006, 03:18
    #33849592
Dimon aka Manowar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
потому что датасорс нужен только в момент биндинга. При постбеках данные нужно вытягивать уже из контролов внутри грида.

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
13.07.2006, 10:54
    #33850103
ePilgrim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
не уже ли никто не подскажет в каком направлении надо искать ответ?
...
Рейтинг: 0 / 0
13.07.2006, 11:19
    #33850219
mogadanez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, ePilgrim, Вы писали:

P>в результате грид найден, но DataSource у него равен null.

P>почему datasource грида равен null? как получить данны из грида после работы пользователя?

Это нормально и правильно, DataSource используется один раз для построения грида.
его совершенно невозможно хранить во вьюстейте, потому что:
a) он может быть Очень большим ( а реально выводится в гриде межет только 1 страничка ).
б) он не обяан быть сериализуемым.

доступаться к данным грида можно так:


private some_class_collection get_items ()
{
    some_class_collection scs = some_class_collection();

    foreach ( DataGridItem item in grd_values.Items )
     {
     some_class sc = newsome_class();
     sc.id =(int) grd_mapping.DataKeys[item.ItemIndex];
     sc.name = ((input_string) item.FindControl("txt_extension")).value.value.Trim();
     sc.description = ((input_string) item.FindControl("txt_desc")).value.value;     
     values.Add(sc);
     }
 return values; 
}

или если есть компонента для обратного байндинга примерно так:


private some_class_collection get_items ()
{
    some_class_collection scs = some_class_collection();

    foreach ( DataGridItem item in grd_values.Items )
     {
         some_class sc = newsome_class();
         new form_items().setup_from( item ).form2data( sc );
     values.Add(sc);
     }
 return values; 
}... << RSDN@Home 1.1.4 beta 6a rev. 436>>
...
Рейтинг: 0 / 0
13.07.2006, 11:55
    #33850356
Spaider
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, ePilgrim, Вы писали:

P>Используется ASP.Net 2.0
P>есть страница, на которой есть грид. при загрузке страницы ининциализируется объект.
P>определенному свойству объекта устанавливается значение — ссылка на грид.
P>вызывается метод в объекте, который инициализирует DataSource грида.

P>default.apsx:
P>
P>protected CMyObject MyObject;

P>    protected void Page_Load(object sender, EventArgs e)
P>    {        
P>         if (!IsPostBack)
P>        {            
P>            MyObject = new CMyObject(); 
P>            MyObject = (ASPxGrid)PreviousPage.FindControl("dgGrid");
P>            MyObject.SetObj();
P>        }
P>    }
P>

DataSource выставляется только при первой загрузке, но не при последующих PostBack 'ах.
Либо выставляй каждый раз DataSource, либо бери данные не из самого grid'а, а оттуда, откуда он их отображает.
Последний вариант, IMHO, более кошерный с точки зрения архитектуры.... << RSDN@Home 1.2.0 alpha rev. 650>>
...
Рейтинг: 0 / 0
13.07.2006, 12:19
    #33850451
Spaider
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, ePilgrim, Вы писали:

P>Используется ASP.Net 2.0
P>есть страница, на которой есть грид. при загрузке страницы ининциализируется объект.
P>определенному свойству объекта устанавливается значение — ссылка на грид.
P>вызывается метод в объекте, который инициализирует DataSource грида.

И кстати, вот Как получить имя DataSource... << RSDN@Home 1.2.0 alpha rev. 650>>
...
Рейтинг: 0 / 0
13.07.2006, 12:19
    #33850452
Spaider
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, mogadanez, Вы писали:

M>доступаться к данным грида можно так:
M>

M>private some_class_collection get_items ()
M>{
M>    some_class_collection scs = some_class_collection();

...
M>

M>или если есть компонента для обратного байндинга примерно так:

M>
M>private some_class_collection get_items ()
M>{
...
M>

"Так, отставить пиво, mogadanez , отсыпь немножко!" (С)
Что это было, сам сможнешь свой код объяснить?... << RSDN@Home 1.2.0 alpha rev. 650>>
...
Рейтинг: 0 / 0
13.07.2006, 12:28
    #33850489
mogadanez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, Spaider, Вы писали:

S>"Так, отставить пиво, mogadanez , отсыпь немножко!" (С)
S>Что это было, сам сможнешь свой код объяснить?

Ни капли с утра... засыхаю... :beer:

пжалуста(очепятки поправлены):

private some_class_collection get_items ()  //метод возвращающий колецию бизнес объектов  из грида
{
    some_class_collection values = some_class_collection(); // создаем пустую коллекцию. код изх 1.1 в 2.0 буде List<some_class> values = new List<some_class> ();

    foreach ( DataGridItem item in grd_values.Items ) // Бежим по все айтемам грида.
     {
     some_class sc = new some_class();                // создаем новый бизнес объект
     sc.id =(int) grd_values.DataKeys[item.ItemIndex]; // вытаскиваем айдишник
     sc.name = ((input_string) item.FindControl("txt_extension")).value.value.Trim();  // находим контролку и берем ее значение
     sc.description = ((input_string) item.FindControl("txt_desc")).value.value;     // аналагична
     values.Add(sc); //добавляем в колекцию
     }
 return values;  // возвращаем
}

код реальный... просто переименованы классы, переменные.
input_string — контролка основаная на текстбоксе для ввода текста.


P.S. или интересуют коментраии ко второму примеру?... << RSDN@Home 1.1.4 beta 6a rev. 436>>
...
Рейтинг: 0 / 0
13.07.2006, 14:34
    #33851139
ePilgrim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Разобрался. объект MyObject сделал как piblic property на главной странице, а на второй странице поднимаю его через PreviousPage.

Но обнаружилась еще вот такая штука. На первой странице после ее вывода браузер продолжает что-то упорно тянуть.
Как сделать что бы севрер отдавал браузеру страниу только когда полностью ее сформирует?
...
Рейтинг: 0 / 0
13.07.2006, 14:56
    #33851242
ePilgrim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
в начале Page_Load поставил Response.BufferOutput = true;
все равно страница с заполненым гиридом выгружается в браузер, после чего браузер все равно продолжает что-то тянуть.

в гриде есть lookup поле с достаточно большим списком. но после выгрузки браузеру весь список заполнен, т.е. бразер тянет не содержимое этого списка.

как правильно сделать вывод страницы?
...
Рейтинг: 0 / 0
13.07.2006, 16:31
    #33851704
cadet354
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, mogadanez, Вы писали:

M>P.S. или интересуют коментраии ко второму примеру?
интересуют.... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
13.07.2006, 17:07
    #33851870
mogadanez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, cadet354, Вы писали:

C>Здравствуйте, mogadanez, Вы писали:

M>>P.S. или интересуют коментраии ко второму примеру?
C>интересуют.

ну он собственно отличается от первого одной строкой:


new form_items().setup_from( item ).form2data( sc );

по частям ее разберем:
new form_items() — компонента — обеспечивает 2 ways Binding. Очень постараюсь выложить ее в SharedLibraries в течении след недели... можете меня попинывать чтобы не забыл.

у компоненты три основных метода.

setup_from( Control ) — От заданого рута пробегает по всем контролам и находит все контролы имеющие байндинг( имеют атрибут binding или реализуют спец интерфейс ). и записывают метаданные этих полей во внутренее хранилище.
Вызов этого метода обязателен для работы с двумя другими.

data2form( object ) — для всех найденых метаданных. Выполняет evaluate binding выражения в контексте переданного объекта.
например если передан объект Job с полями Name, Number и Customer который имеет свое Name и коллекцию объектов Order; binding выражение в таком случае может быть:
Name
Number
Customer.Name
Customer.Orders[2].Date

form2data( object ) — обратный байндинг по тем же правилам записывает данные с формы в переданный объект.... << RSDN@Home 1.1.4 beta 6a rev. 436>>
...
Рейтинг: 0 / 0
13.07.2006, 17:44
    #33852032
cadet354
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, mogadanez, Вы писали:

M>Здравствуйте, cadet354, Вы писали:

C>>Здравствуйте, mogadanez, Вы писали:

M>>>P.S. или интересуют коментраии ко второму примеру?
C>>интересуют.

M>ну он собственно отличается от первого одной строкой:

M>
M>new form_items().setup_from( item ).form2data( sc );
M>

M>по частям ее разберем:
M>new form_items() — компонента — обеспечивает 2 ways Binding. Очень постараюсь выложить ее в SharedLibraries в течении след недели... можете меня попинывать чтобы не забыл.
Заранее спасибо,я уже думал вы там забросили идею нести добро в массы, последний update был вроде 25 апреля,
было бы прекрасно.... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
13.07.2006, 17:53
    #33852058
mogadanez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, cadet354, Вы писали:


M>>по частям ее разберем:
M>>new form_items() — компонента — обеспечивает 2 ways Binding. Очень постараюсь выложить ее в SharedLibraries в течении след недели... можете меня попинывать чтобы не забыл.
C>Заранее спасибо,я уже думал вы там забросили идею нести добро в массы, последний update был вроде 25 апреля,
C>было бы прекрасно.

У нас было сложное время... релиз... дед лайн... ну вы знаете как быват ;)... << RSDN@Home 1.1.4 beta 6a rev. 436>>
...
Рейтинг: 0 / 0
13.07.2006, 18:08
    #33852135
mogadanez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, cadet354, Вы писали:

C>Заранее спасибо,я уже думал вы там забросили идею нести добро в массы, последний update был вроде 25 апреля,
C>было бы прекрасно.

если что пинайте меня в mogadanez{сoбakа}gmail.com или в GTalk... << RSDN@Home 1.1.4 beta 6a rev. 436>>
...
Рейтинг: 0 / 0
19.07.2006, 14:34
    #33864033
Roman Odaisky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSource грида при postback
Здравствуйте, cadet354, Вы писали:

[...]

Поздравляю с написанием 2000000-го сообщения! :))

http://rsdn.ru/Forum/?mid=2000000
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DataSource грида при postback / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]