944 messaggi dal 11 febbraio 2013
ciao a tutti
e scusate se riposto ancora sull'argomento ma non sono riuscito a trovare un esempio di selectmethod che come parametro ha un controllo multiselezione.

potete aiutarmi per favore ?

public IQueryable<Customer> selectCustomer([Control("Checkboxlist")] string customer)
{

}

In debug (facendo varie prove) l'elemento "visto" è sempre il primo della collezione.

grazie in ogni caso
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
l'attributo [Control] ha anche un parametro che ti permette di indicare la proprietà da cui leggere il valore. Potresti usare la proprietà Items della CheckBoxList, che ti permette di ottenere tutto l'elenco di elementi da cui poi dovrai estrarre i selezionati e leggere il loro valore.

Quindi potresti fare:
public IQueryable<Customer> selectCustomer([Control("bCheckboxlist", "Items")] IEnumerable<ListItem> items)
{
  var valoriSelezionati = items.Where(item => item.Selected).Select(item => item.Value).ToArray();

  //qui tua elaborazione
}


ciao,
Moreno

Enjoy learning and just keep making
944 messaggi dal 11 febbraio 2013
cavolo...sono proprio un idiota...ho provato cose turche mentre la soluzione era sotto gli occhi

grazie mille Moreno
944 messaggi dal 11 febbraio 2013
Ho notato che con una dropdownlist il gridview viene subito "aggiornato" mentre
con una checkboxlist debbo richiamare il Gridview.databind() nell'evento
selectedindexchanged del checkboxlist.

E' corretto?

questo è l'esempio funzionante con il solito northwind

northwindEntities entities = new northwindEntities();
    
     public IQueryable<Customer> GridView_GetData([Control("CheckBoxList1", "Items")] IEnumerable<ListItem> items)
    {
        var customers = entities.Customers.AsQueryable();
        
        var valoriSelezionati = items.Where(item => item.Selected).Select(item => item.Value).ToArray();

        if (valoriSelezionati.Length > 0 )
        {
            customers = customers.Where(c => valoriSelezionati.Contains(c.CustomerID));
        }

        return customers.AsQueryable();
    }
 public IQueryable<Customer> CheckBoxList1_GetData()
    {
      return entities.Customers;
    }

    protected void CheckBoxList1_DataBound(object sender, EventArgs e)
    {
        //CheckBoxList1.Items[0].Selected = true;
        //CheckBoxList1.Items[2].Selected = true;
        //CheckBoxList1.Items[3].Selected = true;
    }
    protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridView1.DataBind();
    }

e il markup
<div style="height:150px;width:200px;overflow-y:auto; border: solid 2px gray;">

            <asp:CheckBoxList ID="CheckBoxList1" runat="server" AutoPostBack="true" Height="160px" 
                SelectMethod="CheckBoxList1_GetData" ItemType="Customer"
                DataTextField="CustomerID" DataValueField="CustomerID" 
                OnDataBound="CheckBoxList1_DataBound" OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged"/>
       </div>
        
        <br />
        
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"
         DataKeyNames="CustomerID"
         SelectMethod="GridView_GetData" ItemType="Customer"
          AllowPaging="True" AllowSorting="True">
            <Columns>
                <asp:TemplateField HeaderText="ID" SortExpression="CustomerID">
                    <ItemTemplate>
                    <asp:Label ID="lblCustomerID" runat="server" text='<%# Item.CustomerID %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Contatto" SortExpression="ContactName">
                    <ItemTemplate>
                    <asp:Label ID="lblContactName" runat="server" text='<%# Item.ContactName %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Country" SortExpression="Country">
                    <ItemTemplate>
                    <asp:Label ID="lblCountry" runat="server" text='<%# Item.Country %>' />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.