Есть 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
Здравствуйте, Аноним, Вы писали: А>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
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, 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
Здравствуйте, Аноним, Вы писали: А>извините, не понял, поясните пожалуйста, если не сложно — кодом
Есть объект 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
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
искать можно кстати не внутри ячейке а в 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 у которых я буду запрашивать родителя ? он же в гриде.
есть какой-то способ получить все контролы на странице или как ?