2009-11-13 15 views
6

Estoy trabajando en una página ASP.NET, que básicamente es un hack rápido alrededor de una base de datos. Se usa para un proyecto interno y el sitio está configurado de manera que brinde a varias personas acceso de lectura/escritura a los datos. Una vez a la semana, recopilamos un montón de datos de él, lo agregamos a un archivo XML y lo enviamos como parte de una actualización de la aplicación a nuestros clientes. (Esos clientes no tienen acceso directo.)Al crear un nuevo registro, ¿cómo puedo rellenar algunos campos con valores del filtro?

Como es solo un proyecto interno, casi no hay presupuesto disponible para su desarrollo. Así que elegimos mantener las cosas simples. Almacenamos los datos en una base de datos SQL Server, creamos una clase Entity Framework para el acceso a los datos y colocamos una aplicación web Dynamic Data Site alrededor de esto. Básicamente, algo que se puede configurar muy rápido y sin escribir mucho código. Funciona bastante bien, también. Especialmente el filtrado de registros a través de campos booleanos y referencias de tablas es realmente genial.

Sin embargo, durante la entrada de datos, algunos usuarios cometen pequeños errores. Han configurado los filtros para filtrar un subconjunto de una tabla y luego hacen clic en "Nuevo" para agregar un registro a este subconjunto. Lamentablemente, el nuevo registro no está predeterminado a los valores en esos filtros, por lo que los usuarios deben establecer los valores correctos nuevamente. Es una lástima que ocasionalmente se pierdan esto, por lo que algunos registros terminan con los valores equivocados.

Entonces, cuando un usuario crea un nuevo registro, ¿cómo me aseguro de que este nuevo registro copie los valores de filtro como valor predeterminado? (¡Y aún le permite al usuario elegir otros valores!)

+1

Voy a ser honesto, Me sorprendería si eso fuera posible. +1 para una pregunta interesante :) –

+0

Bueno, si no pregunto, nunca lo haría funcionar. :-) –

+0

Es posible y debería haber estado en la Versión 1: parece que vendrá en el futuro. –

Respuesta

0

Usaría un Object Factory enganchado en el botón Nuevo al hacer clic. Inicializaría el Factory con los valores Filter o una interfaz a la Vista para que la fábrica pueda devolver los objetos correctamente inicializados.

1

¿Hay un evento que se dispara cuando crean un nuevo registro? Si puede implementar un manejador de eventos, y el conjunto actual de filtros es algo a lo que puede acceder mediante programación, entonces en su manejador de eventos newRecord() debe poder revisar cada uno de sus filtros actuales, determinar en qué campo se encuentra el filtro es para, y cuál es el valor del filtro, establecer el campo del nuevo registro para el valor del filtro.

He aquí algunos pseudo-código si ayuda:

NewRecordHandler(object sender, NewRecordEventArgs e) 
{ 
    Record newRecord = (Record)e.NewRecord; 
    foreach(Filter filter in m_dataSource.Filters) 
    { 
     newRecord[filter.FieldName] = filter.Value; 
    } 
} 

Tendrá que ser capaz de acceder de forma dinámica las propiedades de registros, utilizando un índice o una cadena, como Record["ColumnName"] = value;. De lo contrario, es posible que no pueda hacerlo en un bucle, como se ilustra. Espero que esto ayude.

+0

Una buena pregunta, ya que solo estoy usando la funcionalidad predeterminada que VS2008 ofrece con el código "Sitio de datos dinámico". Lamentablemente, no lo hace de manera predeterminada y no ha tenido mucho tiempo para buscar una solución. (En este momento, esto es simplemente bueno de tener que se agregará una vez que conozco una solución. No estamos buscando activamente, ya que otras tareas tienen una mayor prioridad.) –

Cuestiones relacionadas