visual tutorial studio net mvc dal asp asp.net linq web-controls

asp.net - tutorial - Consulta LINQ a WebControl.Controles



dal mvc c# (3)

El problema es que LiteralControl no hereda de WebControl. Sin embargo, no puede tener el foco, por lo que está bien no seleccionarlos. En su instrucción LINQ, agregue otra condición para verificar un WebControl. Por lo tanto, su línea where debería estar where control.TabIndex > changed_control.TabIndex && control is WebControl .

Tengo tres controles TextBox en la página

<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" OnTextChanged="TextBox_TextChanged" TabIndex="1"> <asp:TextBox ID="TextBox2" runat="server" AutoPostBack="True" OnTextChanged="TextBox_TextChanged" TabIndex="2"> <asp:TextBox ID="TextBox3" runat="server" AutoPostBack="True" OnTextChanged="TextBox_TextChanged" TabIndex="3">

y un controlador de eventos

protected void TextBox_TextChanged(object sender, EventArgs e) { WebControl changed_control = (WebControl)sender; var next_controls = from WebControl control in changed_control.Parent.Controls where control.TabIndex > changed_control.TabIndex orderby control.TabIndex select control; next_controls.DefaultIfEmpty(changed_control).First().Focus(); }

El significado de este código es seleccionar TextBox automáticamente con el siguiente TabIndex después de la publicación de la página (ver el problema de Little JB ). En realidad, recibo InvalidCastException porque es imposible convertir desde System.Web.UI.LiteralControl (WebControl.Controls contiene literalmente LiteralControls) a System.Web.UI.WebControls.WebControl.

Me interesa ¿es posible modificar este enfoque de alguna manera para recibir una solución de trabajo? ¡Gracias!


OfType

from control in changed_control .Parent .Controls .OfType<WebControl>()


Debería poder utilizar el método OfType, para devolver solo controles de un tipo determinado.

p.ej

var nextcontrols = from WebControl control in Changed_control.Parent.Controls.OfType<TextBox>()... etc