Set HTML-Eingabekontrollkästchen Namen in Listenansicht

stimmen
0

Ich versuche, eine Checkbox in einer Listenansicht mit Mehrwert zu schaffen als IDs der Datensätze aus der Datenbank, so kann ich es dem Benutzer erlauben, diejenigen überprüfen sie löschen wollen, und wenn sie auf die Schaltfläche Löschen klicken kann ich Wert Sammlung von Kontrollkästchen mit Anfrage bekommen .bilden.

Mein Problem ist, weil Checkbox in einem Listview ASP.NET den Namen in die Name-Eigenschaft der Checkbox Listview macht es mich verhindert request.form zu tun [ „checkboxname“].

Ich will nicht Listviews verwenden, um Befehle löschen, sondern lediglich request.form verwenden, um die Sammlung von aufgegebenem Wert zu erhalten.

Wie kann ich Namen des htmlinput Checkbox so funktioniert .NET nicht ändern es in der Zeit machen?

Ich habe versucht:

        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;

Aber dennoch macht es wie:

<input name=PmList$ctrl0$CheckBoxDelete type=checkbox id=PmList_ctrl0_CheckBoxDelete value=3 />
Veröffentlicht am 09/08/2009 um 15:09
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
0

Ich habe es aussortiert mit:

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

Es ist keine ideale Lösung, aber es für mich funktioniert.

Beantwortet am 09/08/2009 um 16:14
quelle vom benutzer

stimmen
1

Dies geschieht, weil Listview ein Naming Container ist. Sie können in ein paar Möglichkeiten, um dies zu umgehen, aber sie alle laufen auf die Wahl von:

  • Rendern des HTML Sie wollen.
  • die markierten Elemente in einer anderen Art und Weise herausziehen.

Ersteres ist machbar, aber Sie werden wahrscheinlich eine Menge von ASP.NET in Funktionalität gebaut verlieren. Ich würde davon abraten, wenn Sie tief vertraut mit der Kontrolle Lebenszyklus sind.

Sie haben alles, was Sie brauchen, bekam für die die Werte aus in einer Art und Weise ziehen ASP erwartet:

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

Sie müssen nur warten, bis die Steuerungshierarchie aufgefüllt werden, und dann Schleife über die ListView.Items für die Kontrollkästchen suchen. Ihre „Löschen“ Event-Handler der Schaltfläche ist wahrscheinlich ein guter Ort, dies rufen aus.

Übrigens, warum verwenden Sie einen HtmlInputCheckBox, anstatt eine CheckBox?

Beantwortet am 09/08/2009 um 18:15
quelle vom benutzer

stimmen
0

Ich tue dies,

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

Etwas einfacher meiner Meinung nach

Beantwortet am 04/02/2010 um 20:35
quelle vom benutzer

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