Набор HTML ввода имени флажок в ListView

голоса
0

Я пытаюсь добавить флажок в виде списка со значением, как идентификаторы записей из базы данных, так что я могу позволить пользователю проверить те, которые они хотят удалить, и при нажатии на кнопку удаления можно получить коллекцию стоимости флажка с запросом .form.

Моя проблема, потому что флажок в списке следует ASP.NET предоставляет имя ListView в имени свойство флажка, это мешает мне делать Request.Form [ «checkboxname»].

Я не хочу использовать ListViews удалять команды, а просто использовать Request.Form, чтобы получить коллекцию проверяемых значений.

Как я могу установить имя htmlinput флажка так .NET не меняет его в время рендеринга?

Я пытался:

        ListViewDataItem dataItem = (ListViewDataItem)e.Item;
        HtmlInputCheckBox _CheckBoxDelete = (HtmlInputCheckBox)e.Item.FindControl(CheckBoxDelete);

            _CheckBoxDelete.Visible = true;
            _CheckBoxDelete.Value = DataBinder.Eval(dataItem.DataItem, id).ToString();
            _CheckBoxDelete.Name = deletechecked;

Но все-таки это делает, как:

<input name=PmList$ctrl0$CheckBoxDelete type=checkbox id=PmList_ctrl0_CheckBoxDelete value=3 />
Задан 09/08/2009 в 15:09
источник пользователем
На других языках...                            


3 ответов

голоса
0

Я разобрался с:

    string idCollectionTodelete = string.Empty;

    foreach (string x in Request.Form)
    {
        if (x.IndexOf("CheckBoxDelete") > -1)
        {
             idCollectionTodelete += Request.Form[x] + ",";
        }

    }
    new DB().DeleteUserPm(
      ActiveUsername(), subdomain, idCollectionTodelete.TrimEnd(','));

Это не идеальное решение, но это не работает для меня.

Ответил 09/08/2009 в 16:14
источник пользователем

голоса
1

Это происходит потому, что ListView является именование Container. Вы можете обойти это несколькими способами, но все они сводятся к выбору:

  • Визуализация HTML вы хотите.
  • Вытащив проверенные элементы по-другому.

Бывший выполнимо, но вы, вероятно, потеряете много ASP.NET встроенной функциональности. Я бы посоветовал против него, если вы не глубоко знакомы с управлением жизненным циклом.

У вас есть все, что нужно для вытягивания значения в пути ВРУ ожидает:

HtmlInputCheckBox _CheckBoxDelete = (HtmlInputCheckBox)item.FindControl("CheckBoxDelete");

Вам просто нужно ждать иерархий управления заселяться, а затем цикл над ListView.Items ищет флажки. Ваш «Удалить» обработчик события кнопки, вероятно, является хорошим местом, чтобы назвать это с.

Кстати, почему вы используете HtmlInputCheckbox, а не CheckBox?

Ответил 09/08/2009 в 18:15
источник пользователем

голоса
0

я делаю это

    List<HtmlInputCheckBox> chkDeleteContacts = new List<HtmlInputCheckBox>();

    foreach (RepeaterItem item in rptrFamilyContacts.Items)
    {
        chkDeleteContacts.Add((HtmlInputCheckBox)item.FindControl("chkDeleteContact"));
    }

    foreach(HtmlInputCheckBox chkDeleteContact in chkDeleteContacts)
    {
        //Delete Contact
        if(chkDeleteContact.Checked)
            blnStatus = BusinessUtility.DeleteConsumerContact(LoginConsumerID, chkDeleteContact.Value);
    }

Немного проще, на мой взгляд

Ответил 04/02/2010 в 20:35
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more