2009-08-09 3 views
0

Я пытаюсь добавить флажок в listview со значением как идентификаторы записей из базы данных, чтобы я мог разрешить пользователю проверять те, которые они хотят удалить, и когда они нажимают на delete Я могу получить набор значений checkbox с request.form.Установить флажок в поле ввода HTML в listview

Моя проблема в том, что флажок в виде списка ASP.NET отображает имя списка в свойство name этого поля, это предотвращает выполнение запроса 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" /> 

ответ

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(',')); 

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

1

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

  • Оказание нужного HTML-кода.
  • Выдача отмеченных предметов по-другому.

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

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

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

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

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

+0

Я новичок в asp.net и exprimenting с контрольной группой, я найти htmlinputs легче управлять. если я использую checkbox asp, мне придется идти назад и обратно, и в этом проекте получение данных с помощью request.form облегчит мне жизнь – nLL

+0

Достаточно справедливо. В целом бизнес цепочки страниц/управления жизненным циклом может быть пугающим, но он достаточно мощный, как только вы узнаете об этом. Удачи вам в обучении! –

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

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

Смежные вопросы