Zestaw HTML nazwa wyboru wejścia w ListView

głosy
0

Próbuję dodać opcję w listview z wartości jako identyfikatory rekordów z bazy danych, więc mogę pozwolić użytkownikowi na sprawdzenie tych, które chcesz usunąć, a po kliknięciu przycisku kasowania mogę zbiór wartości od wyboru z prośbą .Formularz.

Mój problem jest, ponieważ pole wyboru w ASP.NET listview sprawia nazwę listview do właściwości name z wyboru, to pozwala mi robić Request.Form [ „checkboxname”].

Nie chcę używać Listviews usuwać polecenia, ale po prostu używać Request.Form aby uzyskać zbiór sprawdzonych wartości.

W jaki sposób można ustawić nazwę wyboru htmlinput NET tak nie zmienia to w czas renderowania?

Próbowałem:

        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;

Ale nadal to czyni, takich jak:

<input name=PmList$ctrl0$CheckBoxDelete type=checkbox id=PmList_ctrl0_CheckBoxDelete value=3 />
Utwórz 09/08/2009 o 15:09
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
0

Mam to załatwili z:

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

Nie jest to idealne rozwiązanie, ale to nie dla mnie.

Odpowiedział 09/08/2009 o 16:14
źródło użytkownik

głosy
1

Dzieje się tak, ponieważ ListView jest pojemnik nazewnictwa. Można obejść ten problem na kilka sposobów, ale wszystkie one sprowadzają się do wyboru:

  • Renderowania HTML chcesz.
  • Wyciągając sprawdzonych elementów w inny sposób.

Były to wykonalne, ale będziesz prawdopodobnie straci dużo ASP.NET zbudowany w funkcjonalności. Radzę przeciwko nim, chyba że jesteś głęboko zaznajomiony z cyklu sterowania.

Masz wszystko, czego potrzeba do ciągnięcia wartości w sposób ASP spodziewa:

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

Trzeba tylko czekać na hierarchia kontrola być wypełniane, a następnie pętli nad ListView.Items szukających pola wyboru. Twój „Usuń” obsługi zdarzeń przycisku jest dobrym miejscem, aby zadzwonić to od.

Nawiasem mówiąc, dlaczego używasz HtmlInputCheckbox zamiast CheckBox?

Odpowiedział 09/08/2009 o 18:15
źródło użytkownik

głosy
0

robię to

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

Nieco łatwiej moim zdaniem

Odpowiedział 04/02/2010 o 20:35
źródło użytkownik

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