javascript - Abra la ventana de diálogo en la casilla de verificación haga clic en Telerik RadGrid
asp.net checkbox (2)
Tengo un Telerik RadGrid con una columna GridTemplate que tiene un asp: CheckBox dentro de él. Elegí usar una columna GridTemplate en lugar de una GridCheckBoxColumn o ClientSelectColumn porque quiero que el usuario tenga la capacidad de marcar la casilla y en la casilla de verificación presionada si está marcada abrir una ventana de diálogo para que carguen archivos adjuntos en el registro. No estoy seguro de cómo voy a abrir una RadWindow en la casilla de verificación hacer clic desde dentro de una cuadrícula.
El objetivo general que intento lograr es el siguiente:
Tengo una grilla que parece una lista de verificación. Si el usuario marca la casilla de verificación en una fila, eso significa que tendrá que cargar un documento para que se abra una ventana de diálogo con un pequeño formulario de carga. Una vez que presionen guardar, la ventana se cerrará y la cuadrícula se volverá a enlazar con un enlace para ver el archivo adjunto en la siguiente columna. Si alguien tiene un mejor flujo de trabajo, estoy abierto a sugerencias, de lo contrario, cualquier consejo sobre cómo hacer algo como esto sería muy apreciado.
En lo que respecta al comando para abrir RadWindow, también iría de una manera similar a la propuesta por Mark. No hay ninguna razón para usar una casilla de verificación como un botón ya que esta es la función de dicho control y no es necesario usar su estado en lugar de un comando.
Agregue una columna de botón y establezca su CommandName="something"
Cree el elemento del evento Comando en la cuadrícula y en el código detrás de agregar algo como esto en él:
if (e.CommandName == "something")
{
if (e.Item is RadGridDataItem)
{
RadGridDataItem item = e.Item as RadGridDataItem;
string script = "function f(){openRadWindow(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);";
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", script, true);
}
}
Agrega tu JS:
function openRadWindow() {
var radwindow = $find(''<%=RadWindow1.ClientID %>'');
radwindow.show();
}
Agrega tu radWindow:
<telerik:RadWindow ID="RadWindow1" VisibleOnPageLoad="false" OnClientClose="//here you can generate the event to rebind your grid and show the update" runat="server" Width="450px" Height="650px" NavigateUrl="Window1.aspx" >
</telerik:RadWindow>
Cree la página Window1.aspx y elabore allí su lógica para cargar el archivo.
Otra forma, más fácil, podría ser utilizar un formulario de plantilla de edición en lugar de radWindow y agregar un archivo asyncUploader junto con otros controles que pueda necesitar completar para evitar tener que obtener todas las referencias para asociar la entrada a el record.
Puede simular un clic en la casilla de verificación utilizando un botón de imagen con imágenes marcadas o no, dependiendo del estado que necesite (solo tiene que encontrar los iconos de la imagen). También podría usar los botones de enlace con una fuente que tenga una casilla de verificación en varios estados.
A continuación, puede utilizar el evento de comando, que se disparará hasta el evento de comando de la cuadrícula radiante. Esto también le permite establecer commandarguments para indicar qué fila u otros datos necesita. Introdúzcalo en una propiedad como SelectedItem respaldada por una variable viewstate para que persista y puede establecer VisibleOnPageLoad de la ventana en verdadero.