|
CheckBoxList
|
|||
---|---|---|---|
#18+
У меня есть DataGrid, в него вложен DataList с шаблоном CheckBoxList. Мне нужно все выделенные записи в CheckBoxList сохранить в базу данных. Выделяю, и начинаю сохранять, при сохранении просматриваю весь CheckBoxList таким образом: for i:=0 to count_grid-1 do begin for n:=0 to (dgParent.Items.Item .FindControl('dlChild') as DataList).Items.Count - 1 do begin if (((dgParent.Items.Item.FindControl('dlChild') as DataList).Items.Item[n].FindControl('cb')) as CheckBoxlist).Items.Item[n].Selected then begin //добавление в базу end; end; Первый элемент сохраняется и цикл проходит нормально, а когда переходит к следующему элементу, количество CheckBoxList.Items.Count становится равным нулю. Помогите пожалуйста! Как сделать чтобы элементы CheckBoxList не исчезали? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2004, 14:24 |
|
CheckBoxList
|
|||
---|---|---|---|
#18+
А если так попробывать? Код: plaintext 1. 2. 3. 4.
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2004, 14:32 |
|
CheckBoxList
|
|||
---|---|---|---|
#18+
Ошибка то вот в этой строке, т.е. CheckBoxList.Items.count = 0 Ошибка такая: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index Source Error: Line 477: if (((dgParent.Items.Item .FindControl('dlChild') as DataList).Items.Item[n].FindControl('cb')) as CheckBoxList).Items.Item[n].Selected then Line 478: begin ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2004, 14:56 |
|
CheckBoxList
|
|||
---|---|---|---|
#18+
у CheckBoxList есть свойство CheckedItems. ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpref/html/frlrfSystemWindowsFormsCheckedListBoxClassCheckedIndicesTopic.htm Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2004, 15:32 |
|
CheckBoxList
|
|||
---|---|---|---|
#18+
По одному элементу не желательно сохранять. Сохранять надо массив. Правда Аксес не позволяет сохранять массивы, зато ежели ты работаешь с SQL-сервером или Oracle, то там можно построить запрос (всего один), сохраняющий в БД весь массив данных. Почему у тебя обнуляется число элементов, я не знаю, возможно это связано с тем чёрным ящиком, который представляет из себя процедура сохранения в БД. Итак, раскладываю по полочкам: 1. Ты пишешь судя по коду на Паскале (или как сейчас модно его называть Дельфи). Я не знаю, поддерживает ли Паскаль объектный тип данных, но он поддерживает тип "запись".Вот и создай массив элементов типа "запись". Заполни его в цикле: program abc (input,output); var array1[1..CheckBoxList.Items.Count] :record(не помню как выглядит описание типа рекорд); i:integer; imax:integer; sqlString:text; begin imax:=CheckBoxList.Items.Count for i:=1 to imax if CheckBoxList.Items[i-1].selected=true then {заполнение массива} next i; sqlString:="insert into ..." {процедура подключения к БД}; {процедура взятия запроса SQL}; {процедура отключения от БД} end. 2. Я прошу прощения, уже 10 лет не работал с Паскалем, забыл всё нафиг, помню только, что в 5-й версии отменили запрет ставить точку с запятой перед end. Короче предлагаю сперва массив заполнить, потом сделать строку запроса SQL, а потом осуществить запрос. Так как построчно брать запросы слишком медленно. Max Pro ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2004, 15:32 |
|
CheckBoxList
|
|||
---|---|---|---|
#18+
слажал... не заметил родной паскаль ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2004, 15:43 |
|
|
start [/forum/topic.php?fid=17&fpage=126&tid=1354042]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 147ms |
0 / 0 |