Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.02.2014, 12:43
|
|||
|---|---|---|---|
|
|||
DropDownList'ы в ListView при обновлении данных, происходит какая-то дичь... |
|||
|
#18+
Здравствуйте, вопрос состоит в том, что есть ListView на странице сайта, который заполняется через SqlDataSource1 при помощи ХП, есть кнопка "редактирования", по нажатию на которую, пользователь может обновить содержащуюся в ListView информацию. Далее в <EditItemTemplate> какие-то поля обновляются через TextBox'ы, примерно так: Контакты: <asp:TextBox Text='<%#Bind("DOU_Phones") %>' runat="server" ID="tB1"></asp:TextBox> Email: <asp:TextBox Text='<%#Bind("DOU_Email") %>' runat="server" ID="tB2"></asp:TextBox> А некоторую информацию пользователь должен обновлять из DropDownList'ов, которые заполняется из БД через SqlDataSource'ы при помощи тех же ХП, а не писать ручками, чтобы корректно обновить информацию в таблице. Выглядит, примерно вот так: Микрорайон: <asp:DropDownList runat="server" ID="EditMicroDistrict" DataSourceID="SelectMicroDistrict" DataTextField="Microdistrict_name" DataValueField="Microdistrict_id" SelectedValue='<%#Bind("Microdistrict_id") %>'> </asp:DropDownList> Специализация: <asp:DropDownList runat="server" ID="EditDOUSpec" DataSourceID="SelectComSpec" DataTextField="CompSpec_name" DataValueField="CompSpec_id" SelectedValue='<%#Bind("CompSpec_id") %>'> </asp:DropDownList> Собственно, проблема вся в том, что для каждой записи данной таблицы БД, микрорайон указывается по любому, т. е. не может иметь значения null и поэтому прекрасно сохраняет представление при нажатии по кнопке редактировать и выбирает, тот микрорайон к которому относится данная запись таблицы БД и не возникает ошибки. Но вот в некоторых записях, а их к сожалению большинство, явно не указано к какой специализации они относятся, т. е. имеют значения null, из-за чего выскакивает ошибка, т. к. при заполнении данного DropDownList'а (а он заполняется значениями из другой таблицы), нету пустых значений, соответственно все крашится, и он не может запомнить представление (что в принципе логично), чуть не забыл сказать, если значение специализации указано в какой-нибудь записи, то при нажатии по кнопке редактировать все прекрасно работает без ошибки. Как решить данную проблему, чтобы он сохранял пустое значение специализаци и и не выдавал ошибку? ------------------------------------------------------------------------------------------------------------------------------------ Хочу, еще добавить, что пробовал: 1) программно, заполнять DropDownList специализацию , получилось что-то вроде: protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e) { if (e.Item.ItemType == ListViewItemType.DataItem) { //строка подключения и команда для ХП con.Open(); SqlDataReader dr = cmd.ExecuteReader(); ddlSpec.DataSource = dr; ddlSpec.DataTextField = "CompSpec_name"; ddlSpec.DataValueField = "CompSpec_id"; ddlSpec.DataBind(); con.Close(); ddlSpec.Items.Insert(0, new ListItem("", "")); } Все заполняется, но к сожалению, когда тыкаешь по кнопке редактировать, то он заполняет DropDownList и не сохраняет значение представления, то есть ставит инедкс DDL в 0 (пустая строка, которую я создавал), это не удобно из-за того, что если пользователю захотелось исправить только букву в слове, то еще придется исправлять специализацию (а про это он может и забыть, да и вообще зачем ему думать об этом, если он решил букву исправить), потому что он ее затирает автоматом на пустую. Ну и приведет к тотальному г. Получается что вместе с буквой, еще обновится специализация , а этого не надо. Поэтому отказался от данного способа + если вставляешь на странице .aspx SelectedValue='<%#Bind("CompSpec_id") %> в данный DropDownList, снова все крашится. 2) Пробовал заполнять DropDownList'ы в ручную без SqlDataSource, если 2 из них реально наполнить, то остальные, где значений под 100 и более, сами понимаете... ------------------------------------------------------------------------------------------------------------------------------------ P. S.: сильно не пинайте и извините за много букв (не знаю, как по другому сформулировать), я здесь впервые, недавно устроился на работу на веб-разработчика (специальность вообще не моя, но нравится), хотя опыта как такого нету, сказали что будут помогать, но вот уже 1 месяц работаю, помощи нету никакой =) Работаю по книгам (какие смог найти): Разработка Web-приложений в среде ASP.NET 2.0. Задача - проект - решение; Microsoft ASP.NET 4 c примерами на C# 2010 для профессионалов» авторов Мэтью Мак-Дональд и Марио Шпушта; Может кто сталкивался, буду рад любому совету или решению, т. к. сам бьюсь уже 2 дня, спасибо! 2667760q ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=18&tablet=1&tid=1357637]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 340ms |

| 0 / 0 |
