Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Значит, вот такая у меня возникла заморочка: Есть SQL-запрос, его результаты необходимо поместить в некий пользовательский элемент управления, после чего предоставить пользователю в этом элементне управления понаставить галочек напротив нужных строк. После этого пользователь делает легкое движение рукой, и брюки превращаются... в элегантные шорты! Точнее, с выбранными элементами что-нибудь происходит. Суть - примерно как с письмами в яндексе, отметил все которые надо, удалил. Мои попытки пока завершились неудачей. Я вставлял галки в DataGrid и GridView - все бы хорошо, но вот только чтобы выставить галку, пользователю приходится перевести строку в режим редактирования, что не есть самый удобный метод работы. Как с этим бороться - непонятно. Я пытался создать секцию ItemTemplate в DataList'е как в примерах с целью запихать туды галочку руками: ... <ItemTemplate> <%DataBinder.Eval(Container.DataItem,"name");%> </ItemTemplate> ... Тоже неудачно, вылазит ошибка: The name 'Container' does not exist in the current context. Непонятно в чем причина... у меня код и страница раздельные, может, в этом?... В общем, поможите люди добрые, второй день маюсь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 10:29 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Значит, вот такая у меня возникла заморочка: Есть SQL-запрос, его результаты необходимо поместить в некий пользовательский элемент управления, после чего предоставить пользователю в этом элементне управления понаставить галочек напротив нужных строк. После этого пользователь делает легкое движение рукой, и брюки превращаются... в элегантные шорты! Точнее, с выбранными элементами что-нибудь происходит. Суть - примерно как с письмами в яндексе, отметил все которые надо, удалил. Мои попытки пока завершились неудачей. Я вставлял галки в DataGrid и GridView - все бы хорошо, но вот только чтобы выставить галку, пользователю приходится перевести строку в режим редактирования, что не есть самый удобный метод работы. Как с этим бороться - непонятно. Я пытался создать секцию ItemTemplate в DataList'е как в примерах с целью запихать туды галочку руками: ... <ItemTemplate> <%DataBinder.Eval(Container.DataItem,"name");%> </ItemTemplate> ... Тоже неудачно, вылазит ошибка: The name 'Container' does not exist in the current context. Непонятно в чем причина... у меня код и страница раздельные, может, в этом?... В общем, поможите люди добрые, второй день маюсь... Собственно, а CheckBoxList чем Вас не устраивает. Как по мне, так классический случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 10:44 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Собственно, а CheckBoxList чем Вас не устраивает. Как по мне, так классический случай. Может, я ошибаюсь, но у него нет пагера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 10:54 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Серджио прав:) в ItemTemplate пропишите CheckBox'ы, скриптом на клиентсвой части соберите их значения и передайти в основной кодбехайнд, и будем вам тогда счастье:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 10:55 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Серджио прав:) в ItemTemplate пропишите CheckBox'ы, скриптом на клиентсвой части соберите их значения и передайти в основной кодбехайнд, и будем вам тогда счастье:) Повторюсь еще раз - CheckBoxList вроде бы не имеет пагера для листания страниц, это раз. Во-вторых, есть у меня странные заморочки с ItemTemplate'ом - объект Container отсутствует . Не компилится короче нифига... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 11:21 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
В одном из старых проектов я писал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 12:00 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
SkyLightВ одном из старых проектов я писал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. а на серваке чекнутость потом нельзя проверить? Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 12:07 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Я так во всех проектах и делаю:) проще всего:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 13:10 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Для прелюдии скажем так, я новичок и еще не разбираюсь откуда какие данные и объекты доступны. Про мои попытки с ItemTemplate'ом поподробней: page.aspx: <asp:DataList ID="Grid" runat="server"> <ItemTemplate> <%DataBinder.Eval(Container.DataItem,"name");%> </ItemTemplate> </asp:DataList> page.aspx.cs: Page_Load(...) { ... ds = new DataSet(); sda.Fill(ds); ds.Tables[0].Columns.Add("marked", typeof(Int32)); Grid.DataSource = ds; Grid.DataBind(); ... } Оба файла я привел потому, что в примерах, из которых это слизано, нет CodeBehind-страницы, а у меня есть. Теперь про ошибки - при компилировании page.aspx возникает ошибка "The name 'Container' does not exist in the current context". Почему возникает - не понимаю... Далее, представленные примеры выглядят замечательно, но я в упор не понимаю, что они значат. Объясните, пожалуйста, поподробней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 13:23 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Создаешь отдельный класс: public class CheckboxTemplate : ITemplate { private CheckBox _checkbox; private Control _container; public void InstantiateIn(Control container) { _checkbox = new CheckBox(); _container = container; _checkbox.DataBinding += new EventHandler(_checkbox_DataBinding); _checkbox.ID = "CB"; container.Controls.Add(_checkbox); } void _checkbox_DataBinding(object sender, EventArgs e) { GridViewRow gridViewRow = (GridViewRow)_container.BindingContainer; DataRowView realData = (DataRowView)gridViewRow.DataItem; if ((Boolean)realData["IsRole"]) _checkbox.Checked = Convert.ToBoolean(realData["Permitted"]); else _checkbox.Visible = false; } } В настройках грида преобразуешь один столбец в TemplateField (в данном случае у меня это третий столбец) и убираешь из ItemTemplate и EditItemTemplate все контролы. Потом делаешь финт ушами: protected void Page_Load(object sender, EventArgs e) { TemplateField column = (TemplateField)GridView1.Columns[2]; column.ItemTemplate = new CheckboxTemplate(); column.EditItemTemplate = new CheckboxTemplate(); } Единственное, что тебе потом надо будет сделать - это перебрать грид по столбцам и забубенить чекнутые боксы куда тебе надо -- Век живи - век учись, дураком помрешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 14:10 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Создаешь отдельный класс: public class CheckboxTemplate : ITemplate { private CheckBox _checkbox; private Control _container; public void InstantiateIn(Control container) { _checkbox = new CheckBox(); _container = container; _checkbox.DataBinding += new EventHandler(_checkbox_DataBinding); _checkbox.ID = "CB"; container.Controls.Add(_checkbox); } void _checkbox_DataBinding(object sender, EventArgs e) { GridViewRow gridViewRow = (GridViewRow)_container.BindingContainer; DataRowView realData = (DataRowView)gridViewRow.DataItem; if ((Boolean)realData["IsRole"]) _checkbox.Checked = Convert.ToBoolean(realData["Permitted"]); else _checkbox.Visible = false; } }финт ушами: protected void Page_Load(object sender, EventArgs e) { TemplateField column = (TemplateField)GridView1.Columns[2]; column.ItemTemplate = new CheckboxTemplate(); column.EditItemTemplate = new CheckboxTemplate(); }Так. Попробовал. Местами работает. Но остается непонятным следующее - почему _checkbox.ID = "CB"? А также почему у меня не компилируется кусок if ((Boolean)realData["IsRole"]) _checkbox.Checked = Convert.ToBoolean(realData["Permitted"]); else _checkbox.Visible = false; Между тем, _checkbox.Checked = true/false срабатывает. Что такое и зачем тут _checkbox.Visible? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 15:06 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Ну нельзя же так тупо копировать все подряд :) Я тебе просто кусок своего кода выдрал, приспосабливай. ID чекбокса можешь назначать какой хочешь, visible - это для моих нужд было, realData["IsRole"] - это тоже из моей оперы, это поле, возвращаемое запросом. Вместо if ..... поставь любое свое условие, на Checked тоже ставь свое условие. -- Век живи - век учись, дураком помрешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2006, 16:18 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Ну нельзя же так тупо копировать все подряд Я тебе просто кусок своего кода выдрал, приспосабливай. Во-1-х, заработало. Во-2-х, да ладно, я просто на всякий случай спросил, зачем это и к чему. Зачем я тупо скопировал - меня уже была пара случаев, когда я "приспосабливал" куски кода, а они не работали из-за неких особенностей реализации предложенного куска, которые я выпустил из виду. Поэтому теперь я считаю, что лучше сначала тупо скопировать, скомпилировать, убедиться в рабочем/нерабочем состоянии, а уже дальше - "приспосабливать" Итого - спасибо большое, даже пейджер работает, а я уже было отчаялся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 07:59 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Только я сказал "заработало", как оно, оказывается, не совсем работает - галки, поставленные руками пользователя, не сохраняются в DataSet'е. Как это обеспечить? Есть ли обычные способы или надо извратиться и добираться до галок внутри грида (как это делать?)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 09:48 |
|
||
|
Помогите с поиском чего-нибудь с галочками..
|
|||
|---|---|---|---|
|
#18+
Только я сказал "заработало", как оно, оказывается, не совсем работает - галки, поставленные руками пользователя, не сохраняются в DataSet'е. Как это обеспечить? Есть ли обычные способы или надо извратиться и добираться до галок внутри грида (как это делать?)? И какие события рекомендуется модифицировать, чтобы проставленные галки случайно не "забывались"? PageIndexChanging, еще?. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2006, 09:52 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33918527&tid=1390566]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 269ms |
| total: | 390ms |

| 0 / 0 |
