Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GridView и DropDownList, заполнение DropDownList 
V
    Опции темы
ANDeath
Дата 26.2.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Дорого времени. У меня есть GridView типа:

Код

<asp:GridView ID="goodsForm" runat="server" AutoGenerateColumns="False" DataSourceID="goodsListData" SelectedIndex='<%# Eval("Код_заказа") %>'>
    <Columns>
    <asp:BoundField DataField="Код_товара" HeaderText="Код_товара" SortExpression="Код_товара" />
    <asp:TemplateField HeaderText="Наименование">
        <ItemTemplate>
            <asp:DropDownList ID="namesList" DataSourceId="namesItemListData" DataTextField="Наименование" DataValueField="Код_товара" runat="server" SelectedIndex='<%# Eval("Код_товара") %>' Enabled="False"/>
        </ItemTemplate>
     </asp:TemplateField>
     <asp:BoundField DataField="Цена" HeaderText="Цена" SortExpression="Цена" DataFormatString="{0:C}" />
     <asp:BoundField DataField="Количество" HeaderText="Количество" SortExpression="Количество" />
     ..............
    </Columns>
</asp:GridView>

<asp:AccessDataSource ID="namesItemListData" runat="server" DataFile="C:\\Delsan.mdb" SelectCommand="SELECT [Код товара] AS Код_товара, [Наименование] FROM [Перечень товаров] WHERE ([Код товара] = ?)">
   <SelectParameters>
        <asp:ControlParameter ControlID="?????????????" Name="Код_товара" PropertyName="Text"  Type="Int32" />
   </SelectParameters>
</asp:AccessDataSource>


Подскажите как выставить у DropDownList атрибут SelectedIndex, или в AccessDataSource параметр для выборки, чтобы в DropDownList было выбрано соответствуещее BoundField DataField="Код_товара" наименование?

И сразу второй вопрос: почему может для BoundField DataField="Цена" не работать DataFormatString="{0:C}"

Заранее благодарен!
PM MAIL   Вверх
ANDeath
Дата 27.2.2008, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Еще прикол если поменять запрос для namesItemListData на 
"SELECT [Код товара] AS Код_товара, [Наименование] FROM [Перечень товаров]"
и соответсвенно убрать тег-параметр, то при загрузке страницы все страшно тупит и не доходит до своего логического завершения. Неужели 14 тышь записей такая большая проблема?  smile 
PM MAIL   Вверх
Mymik
Дата 27.2.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Цитата(ANDeath @  26.2.2008,  13:18 Найти цитируемый пост)
И сразу второй вопрос: почему может для BoundField DataField="Цена" не работать DataFormatString="{0:C}"

наверное потому что у тебя буква "C" русская, а не английская.


Цитата(ANDeath @  26.2.2008,  13:18 Найти цитируемый пост)
Подскажите как выставить у DropDownList атрибут SelectedIndex, или в AccessDataSource параметр для выборки, чтобы в DropDownList было выбрано соответствуещее BoundField DataField="Код_товара" наименование?

К сожалению в таком месте где у тебя сейчас хранится DropDownList и AccessDataSource не получится у тебя такое вот использовать. Хотя возможно (но не берусь утверждать) если ты засунешь AccessDataSource в ItemTemplate (рядом с DropDownList) возможно тогда у тебя получится.


Цитата(ANDeath @  27.2.2008,  09:15 Найти цитируемый пост)
Неужели 14 тышь записей такая большая проблема? 
Вообще-то да, это большая таблица. Но еще, она ж запрашивается каждый раз когда у тебя биндится row у GridView. Т.е. она вообще дофига раз запрашивается. Тебе нужно кешировать этот запрос. 
По умолчанию атрибут EnableCaching равен false. А тебе надо выставить его в true и выставить CacheDuration.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
ANDeath
Дата 27.2.2008, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Цитата

К сожалению в таком месте где у тебя сейчас хранится DropDownList и AccessDataSource не получится у тебя такое вот использовать. Хотя возможно (но не берусь утверждать) если ты засунешь AccessDataSource в ItemTemplate (рядом с DropDownList) возможно тогда у тебя получится.

Да вроде как получалось именно так юзать, только SelectedIndex не знаю как правильно прописать, чтобы с GridView связать.
Мне кажется, если переделать BoundField DataField="Код_товара" в TemplateField и присвоить ему id, то должна получиться связь по Eval("Код_товара"), но экспериментировать с этим буду немного поже.

Цитата

Вообще-то да, это большая таблица. Но еще, она ж запрашивается каждый раз когда у тебя биндится row у GridView. Т.е. она вообще дофига раз запрашивается. Тебе нужно кешировать этот запрос. 

Вообще, этот момент я думаю опустить, так как GridView является вложеным в FormView и на данном этапе (просмотра данных), просто добавить необходимое в запрос источника GridView.
А когда я буду запускать FormView в режим редактирования - источник для наименований товаров будет зависеть от типа продукции, т.е. выборка составит масимум 50 записей  smile 

Цитата

По умолчанию атрибут EnableCaching равен false. А тебе надо выставить его в true и выставить CacheDuration.

Можно поддробнее? EnableCaching я конечно выставил, но как быть с CacheDuration - для меня темный лес...)

Цитата

наверное потому что у тебя буква "C" русская, а не английская.

Ксожалению - английская(. Может есть другой способ выставить формат?
PM MAIL   Вверх
ANDeath
Дата 27.2.2008, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Цитата

А когда я буду запускать FormView в режим редактирования - источник для наименований товаров будет зависеть от типа продукции, т.е. выборка составит масимум 50 записей   

Тупанул, всеравно придется обращаться ко всем записям, так как чел в момент редактирования должен видеть в GridView ранее набитые наименования, а они не факт, что будут одного типа продукции.
Действительно хорошим выходом в сложивщейся ситуации может оказаться помещение в ItemTemplate источника AccessDataSource с параметром-условием на BoundField DataField="Код_товара", который в свою очередь скорее мутирует в TemplateField, чтобы связать по ID.  smile 
PM MAIL   Вверх
ANDeath
Дата 29.2.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Запулить AccessDataSource в ItemTemplate получилось, на выборку работает стабильно... а вот на редактирование - бьет ошибку типа функцию Eval для Label ID="Kod" Text=Eval("Код_товара") нельзя применить.

И народ, подскажите все-таки что делать с форматом?!!

Это сообщение отредактировал(а) ANDeath - 29.2.2008, 17:57
PM MAIL   Вверх
ANDeath
Дата 6.3.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Партизаны!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0874 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.