получение значения DropDownList в ячейке GridView
От: Аноним  
Дата: 10.02.08 12:05
Оценка:
Есть GridView, в ячейках которой выпадающие списки. Есть столбец с кнопками Select и Edit.
После редактирования ячеек в обработчике Update (после нажатия Edit) получаю текущее значение выпадающих списков
DropDownList ddl1 = (DropDownList)GridView1.Rows[e.RowIndex].Cells[2].FindControl("DropDownList1");
все работает.
Но если нажать Select (выделить строку), а потом нажать кнопку на странице, то в обработчике этой кнопки, при попытке получить значения выпадающих списков:
int index = GridView1.SelectedIndex;
DropDownList ddl1 = (DropDownList)GridView1.Rows[index].Cells[2].FindControl("DropDownList1");
в ddl1 возвращается null. Что я делаю не так ?
Re: получение значения DropDownList в ячейке GridView
От: AK72 Казахстан  
Дата: 11.02.08 06:31
Оценка:
Здравствуйте, Аноним, Вы писали:
А>DropDownList ddl1 = (DropDownList)GridView1.Rows[index].Cells[2].FindControl("DropDownList1");
А>в ddl1 возвращается null. Что я делаю не так ?

А в режиме выделения строки DropDownList есть? Как правило DropDownList используют в шаблоне <EditItemTemplate>.
Re[2]: получение значения DropDownList в ячейке GridView
От: Аноним  
Дата: 11.02.08 16:44
Оценка:
Здравствуйте, AK72, Вы писали:

AK>Здравствуйте, Аноним, Вы писали:

А>>DropDownList ddl1 = (DropDownList)GridView1.Rows[index].Cells[2].FindControl("DropDownList1");
А>>в ddl1 возвращается null. Что я делаю не так ?

AK>А в режиме выделения строки DropDownList есть? Как правило DropDownList используют в шаблоне <EditItemTemplate>.


а как мне тогда получить индекс соответствующий отображаемому элементу DropDownList ?
Re[3]: получение значения DropDownList в ячейке GridView
От: Norex Россия  
Дата: 13.02.08 00:54
Оценка:
Здравствуйте, Аноним, Вы писали:

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


AK>>Здравствуйте, Аноним, Вы писали:

А>>>DropDownList ddl1 = (DropDownList)GridView1.Rows[index].Cells[2].FindControl("DropDownList1");
А>>>в ddl1 возвращается null. Что я делаю не так ?

AK>>А в режиме выделения строки DropDownList есть? Как правило DropDownList используют в шаблоне <EditItemTemplate>.


А>а как мне тогда получить индекс соответствующий отображаемому элементу DropDownList ?


DropDownList.Parent?
Re[4]: получение значения DropDownList в ячейке GridView
От: Аноним  
Дата: 13.02.08 12:31
Оценка:
Здравствуйте, Norex, Вы писали:

N>Здравствуйте, Аноним, Вы писали:


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


AK>>>Здравствуйте, Аноним, Вы писали:

А>>>>DropDownList ddl1 = (DropDownList)GridView1.Rows[index].Cells[2].FindControl("DropDownList1");
А>>>>в ddl1 возвращается null. Что я делаю не так ?

AK>>>А в режиме выделения строки DropDownList есть? Как правило DropDownList используют в шаблоне <EditItemTemplate>.


А>>а как мне тогда получить индекс соответствующий отображаемому элементу DropDownList ?


N>DropDownList.Parent?


извините, не понял, поясните пожалуйста, если не сложно — кодом
Re[5]: получение значения DropDownList в ячейке GridView
От: Norex Россия  
Дата: 13.02.08 12:55
Оценка:
Здравствуйте, Аноним, Вы писали:
А>извините, не понял, поясните пожалуйста, если не сложно — кодом

Есть объект System.Web.UI.Control
И определяется вот так:
public class Control : IComponent, IDisposable, IParserAccessor, IUrlResolutionService, IDataBindingsAccessor, IControlBuilderAccessor, IControlDesignerAccessor, IExpressionsAccessor
{
    // ...
    public virtual Control Parent { get; }
    // ...

}


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

Дак вот, ваш DropDownList унаследован от ListControl, а он в свою очередь от Control.
Когда вы добавляете любой контрол на страницу свойство Parent выставляется в соотвественно. В этом случаи у DropDownList'a парентом выступит Page.
В вашем же случае у вас вот так:
— Page
-- GridView
--- Row
---- Column
----- DropDownList

И если спросить Parent у DropDownList'a вы получите Control который будет на самом-то деле TableCell, а TebleCell будет GridViewRow и будет иметь свойства RowIndex, RowState и RowType (Header, Item, Footer).

Ответ понятен?

p.s. Учите мат.часть.
Re[6]: получение значения DropDownList в ячейке GridView
От: Norex Россия  
Дата: 13.02.08 12:57
Оценка:
Прошу прощение за сумбурный ответ, у меня тоже есть своя работа.
Re[3]: получение значения DropDownList в ячейке GridView
От: mogadanez Чехия  
Дата: 13.02.08 13:13
Оценка:
AK>>А в режиме выделения строки DropDownList есть? Как правило DropDownList используют в шаблоне <EditItemTemplate>.

А>а как мне тогда получить индекс соответствующий отображаемому элементу DropDownList ?


int index = GridView1.EditIndex;
if (  index > -1 )
{
    DropDownList ddl1 = (DropDownList)GridView1.Rows[index].Cells[2].FindControl("DropDownList1");
}
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[4]: получение значения DropDownList в ячейке GridView
От: mogadanez Чехия  
Дата: 13.02.08 13:18
Оценка:
искать можно кстати не внутри ячейке а в Row, именно он в данном случае NamingContainer, и внутри него контролы должны иметь уникальные айдишки.
Плюс от этого — от перетасовки колонок код не меняется

M>
M>int index = GridView1.EditIndex;
M>if (  index > -1 )
M>{
M>    DropDownList ddl1 = (DropDownList)GridView1.Rows[index].FindControl("DropDownList1");
M>}
M>
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[6]: получение значения DropDownList в ячейке GridView
От: Аноним  
Дата: 13.02.08 13:45
Оценка:
Здравствуйте, Norex, Вы писали:

N>Дак вот, ваш DropDownList унаследован от ListControl, а он в свою очередь от Control.

N>Когда вы добавляете любой контрол на страницу свойство Parent выставляется в соотвественно. В этом случаи у DropDownList'a парентом выступит Page.
N>В вашем же случае у вас вот так:
N>- Page
N>-- GridView
N>--- Row
N>---- Column
N>----- DropDownList

N>И если спросить Parent у DropDownList'a вы получите Control который будет на самом-то деле TableCell, а TebleCell будет GridViewRow и будет иметь свойства RowIndex, RowState и RowType (Header, Item, Footer).


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