Questione : La scatola di RadCombo perde gli articoli su postback.

Abbiamo RadComboBoxes riferito 3 che filtrano una griglia secondo le indicazioni dell'immagine e basata sul seguente esempio; il rel= " nofollow " " del _blank " " del target= " di http://demos.telerik.com/aspnet-ajax/combobox/examples/functionality/multiplecomboboxes/defaultcs.aspx del href= di operazione del spnet-ajax/combobox/examples/functionality/multiplecomboboxes/defaultcs.aspx

The secondo di http://demos.telerik.com/a del codice è destinato per filtrare una griglia da un combobox per fornire il risultato indicato in questo campione;  rel= " nofollow " " del _blank " " del target= " di http://demos.telerik.com/aspnet-ajax/controls/examples/integration/gridcomboajax/defaultcs.aspx?product=grid del href= di spnet-ajax/controls/examples/integration/gridcomboajax/defaultcs.aspx di http://demos.telerik.com/a? il product=grid

A RadGrid si è aggiunto alla pagina ed il valore selezionato del terzo combobox è usato per popolare la griglia.  Il problema è che i comboboxes perdono il loro valore quando il postback accade e la griglia è limitata.  il

We ha provato ad usare i pannelli dell'aggiornamento e la memorizzazione dei valori selezionati nella sessione ma questo non fa work.

Is là un'aggiunta del javscript che deve interagire fra il terzo combobox e la griglia? il risultato finale del

The ha bisogno di tutti i valori del combobox di persistere e l'utente DEVE potere scegliere dagli articoli filtrati in RadComboBox3 (IE sceglie un'altra lezione filtrata dal gruppo di lezione (RadComboBox2). il

We non sta usando il responsabile di Telerik AJAX poichè abbiamo il responsabile dello scritto della borsa degli arnesi di controllo di AJAX funzionare sul MasterPage. nome di schedario " " vuoto " >

GridFilteredbyComboSample.jpg " fileSize " > (104 Kb) il Javascript " del href= " " dei attachmentDetails del class= di (tipo di lima particolari) larghezza dello style= del >The action
1 del >
del class= " r " di >
using codeBody " del prettyprint " " del class= del id= " codeSnippet641780 del >
 0 di CONTEGGIO (Xtrain.XTV7_2_Videos.XTV7_Videos_ID))„, collegamento);
        DataTable distacco = nuovo DataTable ();
        adattatore. Materiale di riempimento (distacco);

        RadComboBox1.DataTextField = “XTV7_Categories_Name„;
        RadComboBox1.DataValueField = “XTV7_Categories_ID„;
        RadComboBox1.DataSource = distacco;
        RadComboBox1.DataBind ();
        //insert il primo articolo
        RadComboBox1.Items.Insert (0, nuovo RadComboBoxItem (“- selezionare una categoria -„));
    }

    LoadCountries vuoto protettivo (continentID della stringa)
    {
        Collegamento di SqlConnection = nuovo SqlConnection (
        ConfigurationManager.ConnectionStrings [“XtrainConnectionString„] .ConnectionString);

        //select un paese basato sul continentID
        Adattatore di SqlDataAdapter = nuovo SqlDataAdapter (“XTV7_Categories_Sub_ID PRESCELTO, XTV7_Categories_Sub_Name, XTV7_Categories_Sub_Available da Xtrain.XTV7_1_Categories_Sub DOVE (XTV7_Categories_ID = @XTV7_Categories_ID) E (XTV7_Categories_Sub_Available = 1)„, collegamento);
        adapter.SelectCommand.Parameters.AddWithValue (“@XTV7_Categories_ID„, continentID);

        DataTable distacco = nuovo DataTable ();
        adattatore. Materiale di riempimento (distacco);

        RadComboBox2.DataTextField = “XTV7_Categories_Sub_Name„;
        RadComboBox2.DataValueField = “XTV7_Categories_Sub_ID„;
        RadComboBox2.DataSource = distacco;
        RadComboBox2.DataBind ();
    }

    LoadCities vuoto protettivo (countryID della stringa)
    {
        Collegamento di SqlConnection = nuovo SqlConnection (
        ConfigurationManager.ConnectionStrings [“XtrainConnectionString„] .ConnectionString);

        //select una città basata sul countryID
        Adattatore di SqlDataAdapter = nuovo SqlDataAdapter (“XTV7_Videos_ID PRESCELTO, XTV7_Categories_Sub_ID, XTV7_Videos_Title da Xtrain.XTV7_2_Videos DOVE (XTV7_Categories_Sub_ID=@XTV7_Categories_Sub_ID) E (XTV7_VideoAvailable = 1) E (NON (XTV7_Videos_Title È NULLO))„, collegamento);
        adapter.SelectCommand.Parameters.AddWithValue (“@XTV7_Categories_Sub_ID„, countryID);

        DataTable distacco = nuovo DataTable ();
        adattatore. Materiale di riempimento (distacco);

        RadComboBox3.DataTextField = “XTV7_Videos_Title„;
        RadComboBox3.DataValueField = “XTV7_Videos_ID„;
        RadComboBox3.DataSource = distacco;
        RadComboBox3.DataBind ();
    }
    #endregion

    #region RadComboBox SelectedIndex variabile
    RadComboBox2_SelectedIndexChanged vuoto protettivo (oggetto o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        //BindData (Geek.XTV7_Categories_Sub_ID.ToString ());
    }

    RadComboBox3_SelectedIndexChanged vuoto protettivo (oggetto o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        BindData (Geek.XTV7_Videos_ID.ToString ());
    }

    #endregion

    Legatura RadGrid di #region con i video dati
    BindData vuoto protettivo (video della stringa)
    {

        stringa sql = "";
        sql +=
            “XTV7_Videos_ID PRESCELTO, XTV7_Categories_Sub_ID, XTV7_Videos_Title da Xtrain.XTV7_2_Videos DOVE (XTV7_Videos_ID=„ +
            Video + ") E (XTV7_VideoAvailable = 1) E (NON (XTV7_Videos_Title È NULLO))„;

        DataTable distacco = _data.GetDataTable (sql);
        se (distacco. Rows.Count > 0)
        {
            RadGrid1.DataSource = distacco;
           RadGrid1.DataBind ();
        }
        altrimenti
        {
            RadGrid1.DataSource = posizione di segnale minimo;
            RadGrid1.DataBind ();
        }
    }
    #endregion

    Articoli chiesti RadComboBox di #region
    RadComboBox1_ItemsRequested vuoto protettivo (oggetto o, RadComboBoxItemsRequestedEventArgs e)
    {
        LoadContinents ();
    }

    RadComboBox2_ItemsRequested vuoto protettivo (oggetto o, RadComboBoxItemsRequestedEventArgs e)
    {
        // e.Text è il primo parametro del metodo dei requestItems
        // ha invocato nel metodo di LoadCountries
        LoadCountries (e.Text);
    }

    RadComboBox3_ItemsRequested vuoto protettivo (oggetto o, RadComboBoxItemsRequestedEventArgs e)
    {
        // e.Text è il primo parametro del metodo dei requestItems
        // ha invocato nel metodo di LoadCities
        LoadCities (e.Text);
    }
    #endregion

    Immagine di legatura di #region a valore di griglia (indipendente dall'edizione)
    stringa protettiva GetImageUrl (articolo di int)
    {
        se (articolo. Uguali (0))
        {
            restituire “~/App_Themes/XGIS/images/LessonLevels/Beginner.png„;
        }
        altrimenti se (articolo. Uguali (1))
        {
            restituire “~/App_Themes/XGIS/images/LessonLevels/Intermediate.png„;
        }
        altrimenti se (articolo. Uguali (2))
        {
            restituire “~/App_Themes/XGIS/images/LessonLevels/Advanced.png„;
        }
        articolo altro. Uguali ("");
        {
            restituire “~/App_Themes/XGIS/images/LessonLevels/clear.gif„;
        }
    }
    #endregion
  
}
nome di schedario " " vuoto " >
RadCombo-LostStatePostGridFilter.jpg " fileSize " > (85 Kb) il Javascript " del href= " " dei attachmentDetails del class= di (tipo di lima particolari) larghezza dello style= del >The con: 550px; altezza: 194px; il alt= " di http://filedb.experts-exchange.com/incoming/2010/05_w20/t305796/RadCombo-LostStatePostGridFilter.jpg "„ dello src= un class= " di 305796 "/>
del >
class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
"" notpretty Language= " C# " MasterPageFile= " ~/App_Master/SingleColumnFixed.master " di Title= della pagina di ><%@ " del class= " " di codeSnippet641781 del id= del

Registro Assembly= " Telerik.Web.UI " TagPrefix= " telerik " Namespace= " Telerik.Web.UI " %> di <%@

    id= " qsfexWrapper " del 
Category:
Group " di AssociatedControlID= " RadComboBox2 " " dell'assistente " del runat= dell'etichetta ID= " Label2:
Lesson " di AssociatedControlID= " RadComboBox3 " " dell'assistente " del runat= dell'etichetta ID= " Label3:

type= " testo/Javascript " del
class= del

Risposta : La scatola di RadCombo perde gli articoli su postback.

Bene, state andando avere certo comportamento inatteso se stiate usando () l'evento *_SelectedIndexChanged per fissare il valore di un controllo. Per lo meno potete prevedere i roundtrips inutili con il codice che può produrre i valori differenti che voi realmente state prevedendo. Inoltre, la pratica ottimale generale è di usare ViewState () per memorizzare i valori se non stiate lasciando una pagina, quindi usa la sessione () per memorizzare i valori che devono essere ripartiti fra le pagine. Dare questo, proverei qualcosa come quanto segue… e notare vogliate questo è completamente non provata. Non ho i comandi di Telerik per verificare questo, ma questa struttura generale farà che cosa state cercando (può richiedere poco tweaking da perfezionare)…
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
CATEGORIA riservata della stringa del const = “CategoryId„;
SOTTOCATEGORIA riservata della stringa del const = “SubCategoryId„;
VIDEO riservato della stringa del const = “VideoId„;

Page_Load vuoto protettivo (mittente dell'oggetto, EventArgs e)
{
	se ritorno (di IsPostBack);
	
	InitializeElements ();
	LoadContinents ();
	PopulateControls ();
}

InitializeElements vuoto statico riservato ()
{
	// è questi veri oggetti di sessione? Ora sembrano essere variabili semplici.
	Geek.XTV7_Categories_ID = stringa. Vuoto;
	Geek.XTV7_Categories_Sub_ID = stringa. Vuoto;
	Geek.XTV7_Videos_ID = stringa. Vuoto;
	
	ViewState.Remove (CATEGORIA);
	ViewState.Remove (SOTTOCATEGORIA);
	ViewState.Remove (VIDEO);
	
    RadGrid1.Visible = falso;
}

PopulateControls vuoto riservato ()
{
	RadGrid1.Visible = falso;
	
	se (ViewState [CATEGORIA]! = && nullo! string.IsNullOrEmpty ((stringa) ViewState [CATEGORIA]))
	{
		varietà tempCategory = (stringa) ViewState [CATEGORIA];
        LoadCountries (tempCategory);
        Label4.Text = tempCategory;
		
		varietà tempC1 = RadComboBox1.Items.FindByValue (tempCategory);
		se (tempC1! = la posizione di segnale minimo) tempC1.Selected = allinea;
	}
	
	se (ViewState [SOTTOCATEGORIA]! = && nullo! string.IsNullOrEmpty ((stringa) ViewState [SOTTOCATEGORIA]))
	{
		varietà tempSubCategory = (stringa) ViewState [SOTTOCATEGORIA];
        LoadCities ((tempSubCategory);
        Label5.Text = tempSubCategory;
		
		varietà tempC2 = RadComboBox2.Items.FindByValue (tempSubCategory);
		se (tempC2! = la posizione di segnale minimo) tempC2.Selected = allinea;
	}
	
	se (ViewState [VIDEO]! = && nullo! string.IsNullOrEmpty ((stringa) ViewState [VIDEO]))
	{
		tempVideo di varietà = (stringa) ViewState [VIDEO];
        BindData (tempVideo);
        Label6.Text = tempVideo;
		
		varietà tempC3 = RadComboBox3.Items.FindByValue (tempVideo);
		se (tempC3! = la posizione di segnale minimo) tempC3.Selected = allinea;
	}
}

BindData vuoto riservato (videoId della stringa)
{
	// questa linea dovrebbe aggiungersi prima del vostro RadGrid1.DataBind ()
	RadGrid1.Visible = allineano;
		
	//keep la vostra logica attuale, ma aggiunge il seguente blocco in qualche luogo in questo metodo…
	Variabili di sessione di #region
	Geek.XTV7_Categories_ID = (stringa) ViewState [CATEGORIA];
	Geek.XTV7_Categories_Sub_ID = (stringa) ViewState [SOTTOCATEGORIA];
	Geek.XTV7_Videos_ID = (stringa) ViewState [VIDEO];
	#endregion
}

Il #region RadComboBox SelectedIndex è cambiato
RadComboBox1_SelectedIndexChanged vuoto protettivo (oggetto o, RadComboBoxSelectedIndexChangedEventArgs e)
{
	ViewState.Remove (CATEGORIA);
	ViewState.Remove (SOTTOCATEGORIA);
	ViewState.Remove (VIDEO);
	
	ViewState.Add (CATEGORIA, RadComboBox1.SelectedValue.Trim ());
	PopulateControls ();
}

RadComboBox2_SelectedIndexChanged vuoto protettivo (oggetto o, RadComboBoxSelectedIndexChangedEventArgs e)
{
	ViewState.Remove (SOTTOCATEGORIA);
	ViewState.Remove (VIDEO);
	
	ViewState.Add (SOTTOCATEGORIA, RadComboBox2.SelectedValue.Trim ());
	PopulateControls ();
}

RadComboBox3_SelectedIndexChanged vuoto protettivo (oggetto o, RadComboBoxSelectedIndexChangedEventArgs e)
{
	ViewState.Remove (VIDEO);
	
	ViewState.Add (VIDEO, RadComboBox3.SelectedValue.Trim ());
	PopulateControls ();
}
Altre soluzioni  
 
programming4us programming4us