powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Элемент CheckBox в HeaderTemplate
8 сообщений из 8, страница 1 из 1
Элемент CheckBox в HeaderTemplate
    #33874496
dj G00$T@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исходные данные: есть DataGrid, у которого Header задан с помощью шаблона, в который включён CheckBox (функция выделитть всё в DataGrid). На событие OnCheckedChange стоит обработчик - он позволяет реагировать и менять всё как нужно, т.е. в обработчике я вижу этот CheckBox и могу следить за тем, сняли там флажок или поставили его.

Вопрос: а как просто из произвольного места обратится к данному CheckBox, расположенном в Headere DataGridа?
...
Рейтинг: 0 / 0
Элемент CheckBox в HeaderTemplate
    #33875237
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перебрать Items грида, найти хидер и в нем найти чекбокс

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Элемент CheckBox в HeaderTemplate
    #33875562
dj G00$T@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перебрать Items грида, найти хидер и в нем найти чекбокс


Перебирал - там нету его, айтемс - это только внутренность DataGrid. У меня просто в Items тоже чекбоксы, так вот я их перебираю периодически, и чтобы я там не менял - меняется только в самом датагриде (то что описано в ItemsTemplate). Так что такой способ не пойдёт - есть другой?
...
Рейтинг: 0 / 0
Элемент CheckBox в HeaderTemplate
    #33876152
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
foreach(DataGridItem item in DataGrid1.Items)
  if(item.ItemType == ListItemType.Header)
    //вот тут ищешь свой чекбокс


Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Элемент CheckBox в HeaderTemplate
    #33876437
dj G00$T@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
foreach(DataGridItem item in DataGrid1.Items)
  if(item.ItemType == ListItemType.Header)
    //вот тут ищешь свой чекбокс



Огромное спасибо, но я уже так пробовал. Я в дебаге посмотрел чего там лежит в коллекции DataGrid1.Items - там лежат только item с item.ItemType=Item и item.ItemType=AlternatingItem, Header - там нету!...

Никак не найду его...
...
Рейтинг: 0 / 0
Элемент CheckBox в HeaderTemplate
    #33876525
dj G00$T@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем решил вопрос так, если вдруг кому пригодится:

Получить из произвольного места доступ к checkbox в Header я так и не смог, зато выкрутился вот так:

Так описан сам HeaderTemplate:


<HeaderTemplate>
<asp:CheckBox ID="SelectAllBox" AutoPostBack="true" OnCheckedChanged="SelectAllBoxChange" runat="server" />
</HeaderTemplate>
При его изменении, вызывается процедура обработки SelectAllBoxChange, а там бы запоминаем в Session собственно нужный нам checkbox:
public void SelectAllBoxChange(object s, EventArgs e)
    {        
        CheckBox selected = (CheckBox)s;

        //...

        Session["All"] = selected;
    }
А потом когда нужно всегда можно посмотреть и изменить его состояние:
CheckBox selectAll = (CheckBox)Session["All"];


Это конечно полный глум, зато работает!
...
Рейтинг: 0 / 0
Элемент CheckBox в HeaderTemplate
    #33877494
Barcik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем знать состояние этого CheckBox?
У меня он был клиентский (<input type="checkbox">). Да и его состояние мне вовсе не нужно было.
...
Рейтинг: 0 / 0
Элемент CheckBox в HeaderTemplate
    #33877756
Жасмин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перебрать Items грида, найти хидер и в нем найти чекбокс


Перебирал - там нету его, айтемс - это только внутренность DataGrid. У меня просто в Items тоже чекбоксы, так вот я их перебираю периодически, и чтобы я там не менял - меняется только в самом датагриде (то что описано в ItemsTemplate). Так что такой способ не пойдёт - есть другой?
Мы тут с одним товарищем сообразили функцию, которая ищет контрол любого уровня вложенности.
http://www.gotdotnet.ru/Forums/Web/346517.aspx
Это моя

   public Control FindAnyControlRecursive(Control control, string name, int RecursionLevel)
    {
        foreach (Control c in control.Controls)
        {
            if (c.ID == name)
                return c;
            if (RecursionLevel > 0)
            {
                Control c1=FindAnyControlRecursive(c, name, RecursionLevel - 1);
                if(c1!=null)
                    return c1;
            }
        }
        return null;
    }
А это его
private Control FindCtrl (Control control, string id)
{
Control retControl = null;
foreach(Control ctrl in control.Controls)
{
if (ctrl.ID == id) return ctrl;
if (ctrl.HasControls())
{
retControl = FindCtrl(ctrl, id);
if (retControl != null && retControl.ID == id) return retControl;
}
}
return retControl;
}


__________________________________
Я ни от кого, ни от чего не завишу.
Встань, делай как я, ни от кого не завись.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Элемент CheckBox в HeaderTemplate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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