Définition du nom de case d'entrée HTML dans listview

voix
0

Je suis en train d'ajouter une case à cocher dans une listview avec valeur ids des enregistrements de la base de données ainsi je peux permettre à l'utilisateur de vérifier ceux qu'ils veulent supprimer et quand ils cliquent sur le bouton de suppression je peux obtenir la collecte de valeur de case à la demande .forme.

Mon problème est, parce que dans une case à cocher ASP.NET listview rend le nom de listview dans la propriété du nom de la case, il me empêche de faire Request.Form [ « checkboxname »].

Je ne veux pas utiliser listviews supprimer des commandes, mais il suffit d'utiliser Request.Form pour obtenir la collection de valeurs vérifiées.

Comment puis-je définir le nom de la case à cocher si HtmlInput .NET ne change pas rendu dans le temps?

J'ai essayé:

        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;

Mais encore il rend comme:

<input name=PmList$ctrl0$CheckBoxDelete type=checkbox id=PmList_ctrl0_CheckBoxDelete value=3 />
Créé 09/08/2009 à 15:09
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
0

Je l'ai trié dehors avec:

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

Il n'est pas une solution idéale, mais il ne fonctionne pour moi.

Créé 09/08/2009 à 16:14
source utilisateur

voix
1

Cela se produit parce que ListView est un conteneur d'attribution de noms. Vous pouvez contourner cela en deux façons, mais ils ont tous faire bouillir le choix de:

  • Rendu le code HTML que vous voulez.
  • Tirer les éléments sélectionnés d'une manière différente.

Le premier est faisable, mais vous aurez probablement perdre beaucoup d'ASP.NET construit dans la fonctionnalité. Je vous le déconseille à moins que vous êtes profondément familier avec le cycle de vie de contrôle.

Vous avez tout ce dont vous avez besoin pour tirer les valeurs d'une manière ASP attend:

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

Vous avez juste besoin d'attendre la hiérarchie de contrôle pour être renseigné, puis une boucle sur les ListView.Items qui cherchent les cases à cocher. Votre gestionnaire d'événements de bouton « Supprimer » est probablement un bon endroit pour appeler cela de.

Soit dit en passant, pourquoi vous utilisez un HtmlInputCheckBox, plutôt que d'un CheckBox?

Créé 09/08/2009 à 18:15
source utilisateur

voix
0

je fais ça

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

Un peu plus facile à mon avis

Créé 04/02/2010 à 20:35
source utilisateur

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