Cuestión : La caja de RadCombo pierde artículos en postback.

Tenemos RadComboBoxes relacionado 3 que filtran una rejilla según las indicaciones de la imagen y basada en el ejemplo siguiente; el rel= " nofollow " del " _blank " del target= de " http://demos.telerik.com/aspnet-ajax/combobox/examples/functionality/multiplecomboboxes/defaultcs.aspx " del href= del tarea del spnet-ajax/combobox/examples/functionality/multiplecomboboxes/defaultcs.aspx

The segundo de http://demos.telerik.com/a del código se significa para filtrar una rejilla de un combobox para producir el resultado demostrado en esta muestra;  ¿rel= " nofollow " del " _blank " del target= de " http://demos.telerik.com/aspnet-ajax/controls/examples/integration/gridcomboajax/defaultcs.aspx?product=grid " del href= del spnet-ajax/controls/examples/integration/gridcomboajax/defaultcs.aspx de http://demos.telerik.com/a? el product=grid

A RadGrid se ha agregado a la página y el valor seleccionado del 3ro combobox se utiliza para poblar la rejilla.  El problema es que los comboboxes pierden su valor cuando ocurre el postback y la rejilla está limitada.  ¿el

We ha intentado utilizar los paneles de la actualización y almacenar valores seleccionados en la sesión pero éste no hace work.

Is allí una adición del javscript que necesite obrar recíprocamente entre el 3ro combobox y la rejilla? el resultado final del

The necesita todos los valores del combobox persistir y el usuario DEBE poder seleccionar de los artículos filtrados en RadComboBox3 (el IE elige otra lección filtrada del grupo de la lección (RadComboBox2). el

We no está utilizando a encargado de Telerik AJAX pues tenemos el encargado de la escritura del juego de herramientas del control de AJAX el funcionar en el MasterPage. nombre de fichero " vacío " >

(104 KB) Javascript del href= " de los " attachmentDetails del class= " de (tipo de archivo detalles) anchura style= del >The en action
1 del >
 0 (de la CUENTA (Xtrain.XTV7_2_Videos.XTV7_Videos_ID))”, conexión);
        DataTable despegue = nuevo DataTable ();
        adaptador. Terraplén (despegue);

        RadComboBox1.DataTextField = “XTV7_Categories_Name”;
        RadComboBox1.DataValueField = “XTV7_Categories_ID”;
        RadComboBox1.DataSource = despegue;
        RadComboBox1.DataBind ();
        //insert el primer artículo
        RadComboBox1.Items.Insert (0, nuevo RadComboBoxItem (“- seleccionar una categoría -”));
    }

    LoadCountries vacío protegido (continentID de la secuencia)
    {
        Conexión de SqlConnection = nuevo SqlConnection (
        ConfigurationManager.ConnectionStrings [“XtrainConnectionString”] .ConnectionString);

        //select un país basado en el continentID
        Adaptador de SqlDataAdapter = nuevo SqlDataAdapter (“XTV7_Categories_Sub_ID SELECTO, XTV7_Categories_Sub_Name, XTV7_Categories_Sub_Available de Xtrain.XTV7_1_Categories_Sub DONDE (XTV7_Categories_ID = @XTV7_Categories_ID) Y (XTV7_Categories_Sub_Available = 1)”, conexión);
        adapter.SelectCommand.Parameters.AddWithValue (“@XTV7_Categories_ID”, continentID);

        DataTable despegue = nuevo DataTable ();
        adaptador. Terraplén (despegue);

        RadComboBox2.DataTextField = “XTV7_Categories_Sub_Name”;
        RadComboBox2.DataValueField = “XTV7_Categories_Sub_ID”;
        RadComboBox2.DataSource = despegue;
        RadComboBox2.DataBind ();
    }

    LoadCities vacío protegido (countryID de la secuencia)
    {
        Conexión de SqlConnection = nuevo SqlConnection (
        ConfigurationManager.ConnectionStrings [“XtrainConnectionString”] .ConnectionString);

        //select una ciudad basada en el countryID
        Adaptador de SqlDataAdapter = nuevo SqlDataAdapter (“XTV7_Videos_ID SELECTO, XTV7_Categories_Sub_ID, XTV7_Videos_Title de Xtrain.XTV7_2_Videos DONDE (XTV7_Categories_Sub_ID=@XTV7_Categories_Sub_ID) Y (XTV7_VideoAvailable = 1) Y (NO (XTV7_Videos_Title ES NULO))”, conexión);
        adapter.SelectCommand.Parameters.AddWithValue (“@XTV7_Categories_Sub_ID”, countryID);

        DataTable despegue = nuevo DataTable ();
        adaptador. Terraplén (despegue);

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

    #region RadComboBox SelectedIndex cambiado
    RadComboBox2_SelectedIndexChanged vacío protegido (objeto o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        //BindData (Geek.XTV7_Categories_Sub_ID.ToString ());
    }

    RadComboBox3_SelectedIndexChanged vacío protegido (objeto o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        BindData (Geek.XTV7_Videos_ID.ToString ());
    }

    #endregion

    Lazo RadGrid del #region con datos de video
    BindData vacío protegido (vídeo de la secuencia)
    {

        secuencia sql = "";
        sql +=
            “XTV7_Videos_ID SELECTO, XTV7_Categories_Sub_ID, XTV7_Videos_Title de Xtrain.XTV7_2_Videos DONDE (XTV7_Videos_ID=” +
            Vídeo + ") Y (XTV7_VideoAvailable = 1) Y (NO (XTV7_Videos_Title ES NULO))”;

        DataTable despegue = _data.GetDataTable (sql);
        si (despegue. Rows.Count > 0)
        {
            RadGrid1.DataSource = despegue;
           RadGrid1.DataBind ();
        }
        
        {
            RadGrid1.DataSource = falta de información;
            RadGrid1.DataBind ();
        }
    }
    #endregion

    Artículos pedidos RadComboBox del #region
    RadComboBox1_ItemsRequested vacío protegido (objeto o, RadComboBoxItemsRequestedEventArgs e)
    {
        LoadContinents ();
    }

    RadComboBox2_ItemsRequested vacío protegido (objeto o, RadComboBoxItemsRequestedEventArgs e)
    {
        // e.Text es el primer parámetro del método de los requestItems
        // invocó en el método de LoadCountries
        LoadCountries (e.Text);
    }

    RadComboBox3_ItemsRequested vacío protegido (objeto o, RadComboBoxItemsRequestedEventArgs e)
    {
        // e.Text es el primer parámetro del método de los requestItems
        // invocó en el método de LoadCities
        LoadCities (e.Text);
    }
    #endregion

    Imagen del lazo del #region al valor de la rejilla (sin relación a la edición)
    secuencia protegida GetImageUrl (artículo de la internacional)
    {
        si (artículo. Iguales (0))
        {
            volver “~/App_Themes/XGIS/images/LessonLevels/Beginner.png”;
        }
        si (artículo. Iguales (1))
        {
            volver “~/App_Themes/XGIS/images/LessonLevels/Intermediate.png”;
        }
        si (artículo. Iguales (2))
        {
            volver “~/App_Themes/XGIS/images/LessonLevels/Advanced.png”;
        }
        artículo otro. Iguales ("");
        {
            volver “~/App_Themes/XGIS/images/LessonLevels/clear.gif”;
        }
    }
    #endregion
  
}
nombre de fichero " vacío " >
(85 KB) Javascript del href= " de los " attachmentDetails del class= " de (tipo de archivo detalles) anchura style= del >
The con: 550px; altura: 194px; alt= " de http://filedb.experts-exchange.com/incoming/2010/05_w20/t305796/RadCombo-LostStatePostGridFilter.jpg del” src= " el " class= de 305796 "/>
del >
class= > " claro " 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 " de Title= de la página de ><%@ " del class= " de " codeSnippet641781 del id= del

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

    id= " qsfexWrapper " del 
Category:
Group " de AssociatedControlID= " RadComboBox2 " del " servidor del runat= de la etiqueta ID= " Label2 ":
Lesson " de AssociatedControlID= " RadComboBox3 " del " servidor del runat= de la etiqueta ID= " Label3 ":

type= " texto/Javascript " del
class= del

Respuesta : La caja de RadCombo pierde artículos en postback.

Bien, usted va a tener cierto comportamiento inesperado si usted está utilizando () el acontecimiento *_SelectedIndexChanged para fijar el valor de un control. Por lo menos usted puede contar con viajes de ida y vuelta innecesarios con el código que puede producir diversos valores que usted está esperando realmente. También, la mejor práctica general es utilizar ViewState () para almacenar valores si usted no está dejando una página, después utiliza la sesión () para almacenar los valores que necesitan ser compartidos entre las páginas. Dar esto, intentaría algo como el siguiente… y observar por favor esto está totalmente no comprobada. No tengo los controles de Telerik para verificar esto, pero este marco general hará lo que usted está buscando (puede requerir poco pellizcar a perfeccionar)…
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:
CATEGORÍA privada de la secuencia del const = “CategoryId”;
SUBCATEGORÍA privada de la secuencia del const = “SubCategoryId”;
VÍDEO privado de la secuencia del const = “VideoId”;

Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
	si vuelta (de IsPostBack);
	
	InitializeElements ();
	LoadContinents ();
	PopulateControls ();
}

InitializeElements vacío estático privado ()
{
	¿// es estos objetos de sesión verdaderos? Ahora aparecen ser variables simples.
	Geek.XTV7_Categories_ID = secuencia. Vacío;
	Geek.XTV7_Categories_Sub_ID = secuencia. Vacío;
	Geek.XTV7_Videos_ID = secuencia. Vacío;
	
	ViewState.Remove (CATEGORÍA);
	ViewState.Remove (SUBCATEGORÍA);
	ViewState.Remove (VÍDEO);
	
    RadGrid1.Visible = falso;
}

PopulateControls vacío privado ()
{
	RadGrid1.Visible = falso;
	
	¡si (ViewState [CATEGORÍA]! ¡= && nulo! string.IsNullOrEmpty ((secuencia) ViewState [CATEGORÍA]))
	{
		var tempCategory = (secuencia) ViewState [CATEGORÍA];
        LoadCountries (tempCategory);
        Label4.Text = tempCategory;
		
		var tempC1 = RadComboBox1.Items.FindByValue (tempCategory);
		¡si (tempC1! = la falta de información) tempC1.Selected = verdad;
	}
	
	¡si (ViewState [SUBCATEGORÍA]! ¡= && nulo! string.IsNullOrEmpty ((secuencia) ViewState [SUBCATEGORÍA]))
	{
		var tempSubCategory = (secuencia) ViewState [SUBCATEGORÍA];
        LoadCities ((tempSubCategory);
        Label5.Text = tempSubCategory;
		
		var tempC2 = RadComboBox2.Items.FindByValue (tempSubCategory);
		¡si (tempC2! = la falta de información) tempC2.Selected = verdad;
	}
	
	¡si (ViewState [VÍDEO]! ¡= && nulo! string.IsNullOrEmpty ((secuencia) ViewState [VÍDEO]))
	{
		tempVideo del var = (secuencia) ViewState [VÍDEO];
        BindData (tempVideo);
        Label6.Text = tempVideo;
		
		var tempC3 = RadComboBox3.Items.FindByValue (tempVideo);
		¡si (tempC3! = la falta de información) tempC3.Selected = verdad;
	}
}

BindData vacío privado (videoId de la secuencia)
{
	// esta línea se debe agregar antes de su RadGrid1.DataBind ()
	RadGrid1.Visible = verdad;
		
	//keep su lógica existente, pero agrega el bloque siguiente en alguna parte en este método…
	Variables de la sesión del #region
	Geek.XTV7_Categories_ID = (secuencia) ViewState [CATEGORÍA];
	Geek.XTV7_Categories_Sub_ID = (secuencia) ViewState [SUBCATEGORÍA];
	Geek.XTV7_Videos_ID = (secuencia) ViewState [VÍDEO];
	#endregion
}

El #region RadComboBox SelectedIndex cambió
RadComboBox1_SelectedIndexChanged vacío protegido (objeto o, RadComboBoxSelectedIndexChangedEventArgs e)
{
	ViewState.Remove (CATEGORÍA);
	ViewState.Remove (SUBCATEGORÍA);
	ViewState.Remove (VÍDEO);
	
	ViewState.Add (CATEGORÍA, RadComboBox1.SelectedValue.Trim ());
	PopulateControls ();
}

RadComboBox2_SelectedIndexChanged vacío protegido (objeto o, RadComboBoxSelectedIndexChangedEventArgs e)
{
	ViewState.Remove (SUBCATEGORÍA);
	ViewState.Remove (VÍDEO);
	
	ViewState.Add (SUBCATEGORÍA, RadComboBox2.SelectedValue.Trim ());
	PopulateControls ();
}

RadComboBox3_SelectedIndexChanged vacío protegido (objeto o, RadComboBoxSelectedIndexChangedEventArgs e)
{
	ViewState.Remove (VÍDEO);
	
	ViewState.Add (VÍDEO, RadComboBox3.SelectedValue.Trim ());
	PopulateControls ();
}
Otras soluciones  
 
programming4us programming4us