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!
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