Set HTML název políčko vstup do ListView

hlasů
0

Snažím se přidat políčko v ListView s hodnotou jako identifikátory záznamů z databáze, takže mohu dovolit uživateli kontrolovat ty, které chcete odstranit, a po kliknutí na tlačítko Odstranit můžu sbírku hodnota políčka s požadavkem .formulář.

Můj problém je, protože políčko v ListView ASP.NET vykreslí název ListView do vlastnosti name políčka, mi brání dělat Request.Form [ „checkboxname“].

Nechci používat Listviews mazat příkazy, ale jednoduše použít Request.Form získat sbírku kontrolovaných hodnot.

Jak lze nastavit název políčku HtmlInput takže .NET nemění to v vykreslení čas?

Zkusil jsem:

        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 přesto vykreslí jako:

<input name=PmList$ctrl0$CheckBoxDelete type=checkbox id=PmList_ctrl0_CheckBoxDelete value=3 />
Položena 09/08/2009 v 15:09
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
0

Jsem řazeny to s:

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

To není ideální řešení, ale to není práce pro mě.

Odpovězeno 09/08/2009 v 16:14
zdroj uživatelem

hlasů
1

To se děje proto, že ListView je pojmenování Container. Můžete obejít toto v několika způsoby, ale všichni se redukuje na výběr:

  • Vykreslování HTML, který chcete.
  • Vytahování zkontrolovat položky jiným způsobem.

První z nich je uskutečnitelný, ale budete pravděpodobně ztratí hodně ASP.NET vestavěné funkcionality. Radila bych proti ní, pokud jste hluboce obeznámeni s řídící životního cyklu.

Máte vše, co potřebujete pro tahání hodnoty ven takovým způsobem, ASP se očekává:

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

Jen budete muset počkat na řídící hierarchie má být naplněna, a potom smyčku přes ListView.Items hledají zaškrtávacích políček. Vaše „Delete“ handler události tlačítku je asi dobré místo pro volání to od.

Mimochodem, proč používat HtmlInputCheckbox, spíše než CheckBoxu?

Odpovězeno 09/08/2009 v 18:15
zdroj uživatelem

hlasů
0

dělám 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);
    }

Něco snazší je podle mého názoru

Odpovězeno 04/02/2010 v 20:35
zdroj uživatelem

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