Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
Хочу изменить построенную визардом реализацию, чтобы при изменении значения текстбокса производился отбор записей аналогично Код: sql 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Убрал WherePartameters и AutoGenerateWhereClause и попробовал перехватывать событие текстбокса TextChaged и прописывать что-то типа Код: c# 1. Это нормальный подход? Как в WhereParameters засунуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2013, 17:18 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2013, 17:38 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
Продолжаем разговор... Сейчас для серверного TextBox в событии TextChanged изменяется значение LinqDataSource.Where. В UpdatePanel лежит ListView, привязанный к LinqDataSource. TextBox лежит не в UpdatePanel, но для панели прописан триггер на TextBox. Хочу, чтобы данные обновлялись (выполнялся запрос) не только по триггеру или по серверному TextChanged, а по onkeyup на клиенте. Как из клиентского скрипта вызвать серверный метод, передав в качестве параметра текущее значение контрола? Сделал по подобию примера из http://msdn.microsoft.com/ru-ru/library/ms178210(v=vs.90).aspx В итоге я вижу, что при вводе в текстовое поле производится вызов серверного метода (отображается предупреждение), а вот обновление данных в UpdatePanel/ListView не происходит. Что сделал не так? Есть ли еще какие-либо более лаконичные или правильные способы? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 12:08 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
RemКак из клиентского скрипта вызвать серверный метод, передав в качестве параметра текущее значение контрола? http://api.jquery.com/jQuery.post/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 12:19 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
Rem, .. а для ListView не надо DataBind() вызывать при апдейте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 12:28 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
carrotikRem, .. а для ListView не надо DataBind() вызывать при апдейте? А надо? В исходном варианте с TextChanged и без DataBind() работало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 12:32 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
ПаганельRemКак из клиентского скрипта вызвать серверный метод, передав в качестве параметра текущее значение контрола? http://api.jquery.com/jQuery.post/ Это более кошерный вариант? Или просто один из вариантов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 12:34 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
Rem, ...я не уверен, поскольку с LinqDataSource не имел дело .. С обычным дейтасорсом - это обычное дело ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 12:36 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
RemПаганельпропущено... http://api.jquery.com/jQuery.post/ Это более кошерный вариант? Или просто один из вариантов?просто один из Вы ж спрашивали "есть ли еще способы" :) по сабжу - поставьте точку останова внутри ReceiveServerData и гляньте что туда пришло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 12:40 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
ПаганельRemпропущено... Это более кошерный вариант? Или просто один из вариантов?просто один из Вы ж спрашивали "есть ли еще способы" :) по сабжу - поставьте точку останова внутри ReceiveServerData и гляньте что туда пришло Всё как надо входит и выходит. Только вот данные в ListView не обновляются. При этом та же самая манипуляция с LinqDataSource в TextChanged приводит к желаемому результату. Да, попробовал и DataBind() прописать - не помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 13:09 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
RemВсё как надо входит и выходит. Только вот данные в ListView не обновляютсяза обновление отвечает эта строчка?Rem Код: javascript 1. тогда попробуйте локализировать проблему например, проверьте, находится ли элемент по его id или попробуйте поменять rValue на какое-нибудь простое значение типа <b>test</b> и посмотреть что получится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 13:15 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
ПаганельRemВсё как надо входит и выходит. Только вот данные в ListView не обновляютсяза обновление отвечает эта строчка?Rem Код: javascript 1. тогда попробуйте локализировать проблему например, проверьте, находится ли элемент по его id или попробуйте поменять rValue на какое-нибудь простое значение типа <b>test</b> и посмотреть что получится... Нет, эта строчка просто информационно-отдладочная. DataSource для ListView является LinqDataSource. В серверном методе прописано изменение Where для моего LinqDataSource. При использовании серверного вызова TextChanged выполняется просто LinqDataSource1.Where = "Name1.StartsWith(" + "\"" + TextBox1.Text + "\")"; Примерно то же самое делается в методе RaiseCallbackEvent, который дергается клиентом: LinqDataSource1.Where = "Name1.StartsWith(" + "\"" + eventArgument + "\")"; Первый вариант работает. При этом не надо передергивать ни сам LinqDataSource, ни ListView, ни UpdatePanel. UpdatePanel и так "понимает", что в дочернем элементе произошли изменения. Во втором случае надо получить новый набор данных и как-то сказать серверу, чтобы он обновил для клиента ListView. Это я и пытаюсь делать путем вызова UpdatePanel1.Update() Похоже, что-то совсем простое я делаю не так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 13:57 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
1) RemПаганельза обновление отвечает эта строчка?Нет, эта строчка просто информационно-отдладочнаяа где же клиентский код, который должен обновлять чаcть страницы? 2) покажите пример, что Вам приходит внутри rValue ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 14:04 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
И еще. И в случае с первым вариантом ListView или LinqDataSource работает как-то криво. Т.е. после изменения Where в TextChanged ListView отображает вполне корректные данные, но при попытке навигации по ListView я возвращаюсь к исходному набору данных. Т.е. получили 1000 ивановых, отобразились первые, скажем, 20 и n страниц. Тыкаю в любую страницу и получаю не ивановых, а полный список как будто никакого условия нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 14:05 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
Паганель1) Remпропущено... Нет, эта строчка просто информационно-отдладочнаяа где же клиентский код, который должен обновлять чаcть страницы? 2) покажите пример, что Вам приходит внутри rValue Как я понимаю, за это отвечает UpdatePanel и ScriptManager и для это ничего дополнительно кодить на клиенте не надо. UpdatePanel просто должна знать, что ей надо обновиться. Либо от дочернего контрола, либо по триггеру, либо вызвав обновление программно. Внутри rValue приходит строка, которая благополучно отображается в spane-е. Вариант с развесистым клиентским и серверным кодом я уже попробовал - с ним проблем никаких. Теперь хочу то же самое сделать с использованием ajax-компонентов asp.net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 14:11 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
RemПаганельа где же клиентский код, который должен обновлять чаcть страницы?Как я понимаю, за это отвечает UpdatePanel и ScriptManager и для это ничего дополнительно кодить на клиенте не надоесли код пишете не Вы, то это еще не значит, что код не существует найдите его firebug-ом например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 14:18 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
ПаганельRemпропущено... Как я понимаю, за это отвечает UpdatePanel и ScriptManager и для это ничего дополнительно кодить на клиенте не надоесли код пишете не Вы, то это еще не значит, что код не существует найдите его firebug-ом например Я это понимаю. Просто в контексте Вашего вопроса речь шла о результате, который принял клиентский скрипт, написанный мной. А он как раз, кроме вызова серверного метода ничего и не делает. Посмотрел... сервер отдал в клиентский html несколько hidden-полей, в одном из которых, видимо, данные + еще javascript-ы с кучей кода, которые, как я понимаю, занимаются отрисовкой результата. Как посмотреть, что конкретно содержится в hidden-поле я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 15:41 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
берем firebug ищем dopostback ставим точку останова смотрим - с какими параметрами она вызывается при обновлении updatepanel пишем свой код, вызывающий ее с теми же параметрами вешаем этот код в качестве обработчика на изменение текста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 16:28 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
Паганельберем firebug ищем dopostback ставим точку останова смотрим - с какими параметрами она вызывается при обновлении updatepanel пишем свой код, вызывающий ее с теми же параметрами вешаем этот код в качестве обработчика на изменение текста dopostback в клиентском сценарии вовсе не вызывается на событии изменения текста Ладно, спасибо, покапаюсь в примере на msdn. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 17:12 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
Remdopostback в клиентском сценарии вовсе не вызывается на событии изменения текстану да, говорю же руками доделайте а на других событиях? попробуйте кнопку внутрь панели вставить и посмотреть как dopostback тогда вызывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 17:16 |
|
||
|
Изменение where в LINQ
|
|||
|---|---|---|---|
|
#18+
ПаганельRemdopostback в клиентском сценарии вовсе не вызывается на событии изменения текстану да, говорю же руками доделайте а на других событиях? попробуйте кнопку внутрь панели вставить и посмотреть как dopostback тогда вызывается По всей видимости, проблема связана с тем, что на одной странице одновременно обратный вызов реализуется, как программно (на ввод в TextBox) так и декларативно в виде компонентов ScriptManager и UpdatePanel, которые сами разруливают внешний вид контролов в зависимости от событий. Собственно говоря, я ведь от сервера и для первого случая получаю ответ, а тут задача состоит в том, чтобы еще пнуть UpadePanel со своим умом и в "параллельной реальности" :-). Или слать post принудительно в клиентском сценарии после ввода символа в TextBox. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 17:33 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38197656&tid=1358626]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
96ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 426ms |

| 0 / 0 |
