|
Тема
|
.net DataGrid Problem
|
|
Автор |
Borg (Нерегистриран) |
Публикувано | 21.05.03 10:53 |
|
Имам следният проблем:
в един datagrid трябва да сложа инфо от 2 таблици, логически свързани (едно поле от първата таблица е определящо за инфото от втората). В ASP го правя с 2 Recordset-a, като изпълнявам куери на SQL Server-a и така ми се решава проблема (щото сам си пиша таблицата). Обаче в .нет не иска и не иска - просто не знам как да задам селектите за втората таблица. Ще се радвам на сякакви предложения за решение на проблема (явно за мен е голям проблем). Не искам да ползвам 2 грида, щото тогава инфото няма да е адекватно (също и view е нежелателно да се пише)
"За да чуеш, трябва да мълчиш !" (Оджиън)
| |
Тема
|
Re: .net DataGrid Problem
[re: Borg]
|
|
Автор | psy (Нерегистриран) |
Публикувано | 22.05.03 17:12 |
|
edna ideq
pravish edin dataset object
kato v samia dataset sazdavash tablicite s relaciite(tova stava v .net)
posle s edno query inner join selectvash info ot dvete tablici
| |
Тема
|
Огледай
[re: Borg]
|
|
Автор |
jamie (Bad to the bone) |
Публикувано | 22.05.03 17:16 |
|
ДейтаСет-а.
Има MERGE метод - много удобен.
1. Вкарваш първите данните в първата таблица в ДейтаСет-а.
2. Вадиш си от неговите колони данните които ти трябват, зареждаш ги в стринга за 2-рия СКУЕЛ СЕЛЕКТ и вадиш вторите данни в друга таблица на същия ДейтаСет (може и в друг ДейтаСет).
3. MERGE двата и ги показваш в Грид-а.
Изобщо разглеждай ДейтаСет като база данни, не като таблица.
UB40 !
| |
Тема
|
Re: Огледай
[re: jamie]
|
|
Автор |
Borg (Нерегистриран) |
Публикувано | 26.05.03 12:46 |
|
Мерси.
разглеждам аз, разглеждам, ама никъде не намерих как да извадя стойността от определена клетка от таблица в дейтасет-а. Как става това? като взимам dataset.tables["mytable"].Columns["column"].ToString() и ми връща името на колоната ...
"За да чуеш, трябва да мълчиш !" (Оджиън)
| |
Тема
|
Почти....
[re: Borg]
|
|
Автор |
jamie (Bad to the bone) |
Публикувано | 27.05.03 00:52 |
|
dataset.tables["mytable"].Rows
Между другото, не го дописвам за да не те объркам :-))) Не съм в работата си сега, нямам МСДН и карам малко наизуст.
Но това трябва да търсиш.
UB40 !Редактирано от jamie на 27.05.03 00:55.
| |
Тема
|
стана ...
[re: jamie]
|
|
Автор |
Borg (Нерегистриран) |
Публикувано | 29.05.03 17:40 |
|
... много 10х. :)) направих си го с вирт. таблица и нов дейтасет, после мърдж и стана перфектно :)
обаче сега дойде последният проблем: как да задам на определена колона от грида да вземе values от дейтасет-а т.е. една колона от грида да се пълни от една колона от дейтасета. Не намерих пропърти, което да го указва, а в designView не ми се показват промените направени с код.
Надявам се не съм много нахален с въпросите си
"За да чуеш, трябва да мълчиш !" (Оджиън)
| |
Тема
|
Етап 2
[re: Borg]
|
|
Автор |
jamie (Bad to the bone) |
Публикувано | 30.05.03 00:28 |
|
Имаме си подготвен Дейтасет.
Имаме си грид НА КОЙТО ПРОПЪТИТО "АУТОФИЛЛ" или нещо от сорта да е ЗАБРАНЕНО !!!!
После използваме метода КЛЕАР на грида.
И добавяме колоните - толкова колкото са ни колоните в Дейтасет таблицата от която ще пълним. За удобство имаш и няколко вида колони за ГРИД компонента :-))) БАУНД колоните са тези които директно отговарят на колоните в Дейтасета - ако няма да обработваш данните при извеждането. Иначе обърни внимание и на ТЕМПЛЕЙТ колоните.
След като добавиш всички колони, с посочено за всяка колона (когато създаваш обекта БАУНД КОЛУМН) име на колоната от таблицата в Дейтасета, просто свързваш ГРИД и ДЕЙТАСЕТ (мисля че беше ГРИД.СОРС=ДЕЙТАСЕТ("ТАБЛИЦА")) , а после изпълняваш ГРИД.БИНД().
Това е всичко.
Пример:
"СЕЛЕКТ А, Б, В ФРОМ АААА" - с това си напълнил дейтасета ДСЕТ("ПРОБА"). Грида ти е ГРД.
Дим обжКол ас БоундКолумн
ГРД.Колумнс.Клеар()
обжКол=ню БоундКолумн()
тук зареждаш "екстрите", като не забравиш да укажеш че например тази колона е "свързана" с полето "А" от дейтасета.
ГРД.Колумнс.Адд(обжКол)
обжКол=Нотинг
Това се повтаря и за "Б", и за "С" колоните от Дейтасета. После:
ГРД.Сорс=ДСЕТ("ПРОБА")
ГРД.Бинд()
ПП: Естествено може да се опиташ и директно (но по-неуправляемо):
Имаме си подготвен Дейтасет.
Имаме си грид НА КОЙТО ПРОПЪТИТО "АУТОФИЛЛ" или нещо от сорта да е РАЗРЕШЕНО !!!!
ГРД.Сорс=ДСЕТ("ПРОБА")
ГРД.Бинд()
Както забелязваш - не пипаме колоните в ГРД една по една. Има си плюсове, има си и недостатъци.
ППП: При МЕРГЕ (Мърдж) - ако по някаква причина Мърджа не се изпълни, гледай да не се окаже че едната таблица (или дейтасет) има някоя от колоните , несъвпадаща по тип със съответната колона от другата таблица(дейтасет). За пример - може СЕЛЕКТ 0 АС А ФРОМ ААА да е интижър, а СЕЛЕКТ А ФРОМ БББ (където А в таблица БББ е от тип смолинт). Тогава може дори да не получиш явна грешка - просто МЪРДЖ-а няма да сработи. Решението е в привеждане на "0" например към типа на "А" - в самия СКУЕЛ стейтмънт. По принцип много внимавай да съответстват типовете по колони.
ПППП: В Грид-а има още една благинка. Към всяка колонка може да се добавят и един или повече контроли. И после да се вадят от определен ред (РОУ) на грида - било по .Контролс(индекс), било с .Файнд метод - направо по име (много по-удачен)
UB40 !Редактирано от jamie на 30.05.03 00:34.
| |
Тема
|
Re: Етап 2
[re: jamie]
|
|
Автор |
Borg (Нерегистриран) |
Публикувано | 30.05.03 17:35 |
|
Получи се много добре. Много съм ти благодарен Jamie. наистина голяма помощ ми оказа, а покрай този проблем се появиха и доста интересни и нови за мен неща :))) Още веднъж 10х по много :)
"За да чуеш, трябва да мълчиш !" (Оджиън)
| |
|
|
|
|