powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Изменить значения ItemTemplate(CheckBox) в GridView
9 сообщений из 9, страница 1 из 1
Изменить значения ItemTemplate(CheckBox) в GridView
    #33906782
Sergej_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть GridView с ItemTemplate(CheckBox). При загрузке надо пробежаться по строкам грида и поставить галки в некоторые CheckBox`ы.

В Page_Load для начала определяю кол-во строк и получаю 0 :
Код: plaintext
1.
2.
int nRows;
nRows = GridView1.Rows.Count;   // =  0  !!!!

В чем дело? Это надо не в Page_Load делать?
Подскажите, если можно, синтаксис с foreach для сканирования строк грида.
P.S. ASP 2.0.
...
Рейтинг: 0 / 0
Изменить значения ItemTemplate(CheckBox) в GridView
    #33906876
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
foreach(GridViewRow row in GridView1.Rows)
Только если ты используешь датасорс - грид все равно будет перебинден. Так что лучше менять данные в источнике данных.

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Изменить значения ItemTemplate(CheckBox) в GridView
    #33908547
Sergej_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ, но пока не получается. Вернее, если код запускаю например из Button, то все ОК. А из Page_Load не работает, т.к. в foreach(GridViewRow row in GridView1.Rows) кол-во строк почему-то = 0.

>Так что лучше менять данные в источнике данных.
мне в таблицу не надо записывать состояние checkbox`a

Гляньте, пожалуйста на код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<asp:GridView ID="grdGor" runat="server" AutoGenerateColumns="False" DataKeyNames="KodGor" DataSourceID="sdsGor" ShowHeader="False" Width="100%">
	<Columns>
		<asp:TemplateField ShowHeader="False">
			<ItemTemplate>
				<asp:CheckBox ID="chkSel" runat="server" Text='<%# Eval("NazGor")%>' AutoPostBack="true"/>
			</ItemTemplate>
                                
		</asp:TemplateField>
			<asp:TemplateField ShowHeader="False">
				<ItemTemplate>
					<asp:Label ID="lblKodGor" runat="server" Text='<%# Eval("KodGor") %>' Visible=false/>
				</ItemTemplate>
		</asp:TemplateField>
	</Columns>
</asp:GridView>

В Page_Load:
Код: plaintext
1.
2.
3.
4.
5.
foreach (GridViewRow row in grdGor.Rows)
{
    if ( 1  ==  1 ) // tut potom budet realnoje uslovije
         ((CheckBox)row.FindControl("chkSel")).Checked = true;
}
...
Рейтинг: 0 / 0
Изменить значения ItemTemplate(CheckBox) в GridView
    #33908628
kir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
kir
Гость
Проставляй значения прямо в темплейте, типа:
Checked="<%#МетодКоторыйЗаполняетCheckBox()%>"
...
Рейтинг: 0 / 0
Изменить значения ItemTemplate(CheckBox) в GridView
    #33908753
Sergej_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, работает!
Но не пойму, как методом возвращать true только для определенных строк?
Пробую так:
Код: plaintext
1.
2.
3.
4.
5.
6.
protected bool GetChkGor() 
if (((Label)grdGor.FindControl("lblKodGor")).Text == "NaprimerXX")
            return true;
        else
            return false;

, выдает ошибку. Передавать в метод параметр строки?
Код: plaintext
1.
Checked=<%#GetChkGor("KodGor")%>
тоже не проходит.
...
Рейтинг: 0 / 0
Изменить значения ItemTemplate(CheckBox) в GridView
    #33908816
kir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
kir
Гость
Checked=<%#GetChkGor(Eval("KodGor"))%>
...
Рейтинг: 0 / 0
Изменить значения ItemTemplate(CheckBox) в GridView
    #33909450
Sergej_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот код метода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    protected bool GetChkGor(int KodGor) 
    {  
        if (KodGor ==  1 )
            return true;
        else
            return false;
    }

вот кусок грида:
Код: plaintext
1.
2.
3.
4.
<ItemTemplate>
	<asp:CheckBox ID="chkSel" runat="server" AutoPostBack="true" 
	Checked=<%# GetChkGor(Eval("KodGor"))%> />
</ItemTemplate>
на код <%# GetChkGor(Eval("KodGor"))%> ругается так:
Error 1: The best overloaded method match for 'MasterPage.GetChkGor(int)' has some invalid arguments
Error 2: Argument '1': cannot convert from 'object' to 'int'

Т.е. не могу нормально передать в метод значение поля. Если можете, подскажите, как. По форуму не нашел. Заранее спасибо.
...
Рейтинг: 0 / 0
Изменить значения ItemTemplate(CheckBox) в GridView
    #33909938
kir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
kir
Гость
Попробуй так:
<%# GetChkGor(Convert.ToInt32(Eval("KodGor")))%>
...
Рейтинг: 0 / 0
Изменить значения ItemTemplate(CheckBox) в GridView
    #33910775
Sergej_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заработало!!! Огромное спасибо, kir!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Изменить значения ItemTemplate(CheckBox) в GridView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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