powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите с поиском чего-нибудь с галочками..
15 сообщений из 15, страница 1 из 1
Помогите с поиском чего-нибудь с галочками..
    #33918181
Значит, вот такая у меня возникла заморочка:

Есть SQL-запрос, его результаты необходимо поместить в некий пользовательский элемент управления, после чего предоставить пользователю в этом элементне управления понаставить галочек напротив нужных строк. После этого пользователь делает легкое движение рукой, и брюки превращаются... в элегантные шорты! Точнее, с выбранными элементами что-нибудь происходит. Суть - примерно как с письмами в яндексе, отметил все которые надо, удалил.

Мои попытки пока завершились неудачей.

Я вставлял галки в DataGrid и GridView - все бы хорошо, но вот только чтобы выставить галку, пользователю приходится перевести строку в режим редактирования, что не есть самый удобный метод работы. Как с этим бороться - непонятно.

Я пытался создать секцию ItemTemplate в DataList'е как в примерах с целью запихать туды галочку руками:
...
<ItemTemplate>
<%DataBinder.Eval(Container.DataItem,"name");%>
</ItemTemplate>
...
Тоже неудачно, вылазит ошибка: The name 'Container' does not exist in the current context. Непонятно в чем причина... у меня код и страница раздельные, может, в этом?...

В общем, поможите люди добрые, второй день маюсь...
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33918224
Sergio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значит, вот такая у меня возникла заморочка:

Есть SQL-запрос, его результаты необходимо поместить в некий пользовательский элемент управления, после чего предоставить пользователю в этом элементне управления понаставить галочек напротив нужных строк. После этого пользователь делает легкое движение рукой, и брюки превращаются... в элегантные шорты! Точнее, с выбранными элементами что-нибудь происходит. Суть - примерно как с письмами в яндексе, отметил все которые надо, удалил.

Мои попытки пока завершились неудачей.

Я вставлял галки в DataGrid и GridView - все бы хорошо, но вот только чтобы выставить галку, пользователю приходится перевести строку в режим редактирования, что не есть самый удобный метод работы. Как с этим бороться - непонятно.

Я пытался создать секцию ItemTemplate в DataList'е как в примерах с целью запихать туды галочку руками:
...
<ItemTemplate>
<%DataBinder.Eval(Container.DataItem,"name");%>
</ItemTemplate>
...
Тоже неудачно, вылазит ошибка: The name 'Container' does not exist in the current context. Непонятно в чем причина... у меня код и страница раздельные, может, в этом?...

В общем, поможите люди добрые, второй день маюсь...

Собственно, а CheckBoxList чем Вас не устраивает. Как по мне, так классический случай.
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33918267
Собственно, а CheckBoxList чем Вас не устраивает. Как по мне, так классический случай.

Может, я ошибаюсь, но у него нет пагера.
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33918279
Dade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Серджио прав:)
в ItemTemplate пропишите CheckBox'ы, скриптом на клиентсвой части соберите их значения и передайти в основной кодбехайнд, и будем вам тогда счастье:)
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33918365
Серджио прав:)
в ItemTemplate пропишите CheckBox'ы, скриптом на клиентсвой части соберите их значения и передайти в основной кодбехайнд, и будем вам тогда счастье:)

Повторюсь еще раз - CheckBoxList вроде бы не имеет пагера для листания страниц, это раз. Во-вторых, есть у меня странные заморочки с ItemTemplate'ом - объект Container отсутствует
. Не компилится короче нифига...
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33918527
Фотография SkyLight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одном из старых проектов я писал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<asp:TemplateField>
   <ItemTemplate>
      <table width="100%">
         <tr>
            <td width="1" rowspan="2" valign=top>
               <input name="row_id" id='<%# Eval("id") %>' type="checkbox" />
            </td>
            ...
         </tr>
         ...
      </table>
   </ItemTemplate>
</asp:TemplateField>
а потом в клиентском скрипте выбирал массив чеков (getElementsByName()), проходил по нему и проверял чеки на "чекнутость" и если true, то добавлял его ID к массиву, который потом передавал на сервак.
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33918561
dima_dima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyLightВ одном из старых проектов я писал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<asp:TemplateField>
   <ItemTemplate>
      <table width="100%">
         <tr>
            <td width="1" rowspan="2" valign=top>
               <input name="row_id" id='<%# Eval("id") %>' type="checkbox" />
            </td>
            ...
         </tr>
         ...
      </table>
   </ItemTemplate>
</asp:TemplateField>
а потом в клиентском скрипте выбирал массив чеков (getElementsByName()), проходил по нему и проверял чеки на "чекнутость" и если true, то добавлял его ID к массиву, который потом передавал на сервак.

а на серваке чекнутость потом нельзя проверить?
Код: plaintext
1.
2.
For Each Id In Request.Form("id").Split(",")
....Response.Write(Id)
Next
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33918773
Dade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так во всех проектах и делаю:)
проще всего:)
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33918817
Для прелюдии скажем так, я новичок и еще не разбираюсь откуда какие данные и объекты доступны.

Про мои попытки с 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". Почему возникает - не понимаю...

Далее, представленные примеры выглядят замечательно, но я в упор не понимаю, что они значат. Объясните, пожалуйста, поподробней.
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33918978
Махмуд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создаешь отдельный класс:


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();
}


Единственное, что тебе потом надо будет сделать - это перебрать грид по столбцам и забубенить чекнутые боксы куда тебе надо
--
Век живи - век учись, дураком помрешь
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33919152
Создаешь отдельный класс:

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?
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33919420
Махмуд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну нельзя же так тупо копировать все подряд :) Я тебе просто кусок своего кода выдрал, приспосабливай.
ID чекбокса можешь назначать какой хочешь, visible - это для моих нужд было, realData["IsRole"] - это тоже из моей оперы, это поле, возвращаемое запросом.
Вместо if ..... поставь любое свое условие, на Checked тоже ставь свое условие.

--
Век живи - век учись, дураком помрешь
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33920376
Ну нельзя же так тупо копировать все подряд
Я тебе просто кусок своего кода выдрал, приспосабливай.


Во-1-х, заработало.

Во-2-х, да ладно, я просто на всякий случай спросил, зачем это и к чему. Зачем я тупо скопировал - меня уже была пара случаев, когда я "приспосабливал" куски кода, а они не работали из-за неких особенностей реализации предложенного куска, которые я выпустил из виду. Поэтому теперь я считаю, что лучше сначала тупо скопировать, скомпилировать, убедиться в рабочем/нерабочем состоянии, а уже дальше - "приспосабливать"


Итого - спасибо большое, даже пейджер работает, а я уже было отчаялся
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33920552
Только я сказал "заработало", как оно, оказывается, не совсем работает - галки, поставленные руками пользователя, не сохраняются в DataSet'е. Как это обеспечить? Есть ли обычные способы или надо извратиться и добираться до галок внутри грида (как это делать?)?
...
Рейтинг: 0 / 0
Помогите с поиском чего-нибудь с галочками..
    #33920568
Только я сказал "заработало", как оно, оказывается, не совсем работает - галки, поставленные руками пользователя, не сохраняются в DataSet'е. Как это обеспечить? Есть ли обычные способы или надо извратиться и добираться до галок внутри грида (как это делать?)?

И какие события рекомендуется модифицировать, чтобы проставленные галки случайно не "забывались"? PageIndexChanging, еще?.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите с поиском чего-нибудь с галочками..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]