2009-09-29 12 views
5

Finalmente estoy investigando los datos dinámicos (hace mucho tiempo). Observé que cuando veo el sitio web, en la lista de la tabla principal, no se muestra el campo de la clave principal.Datos dinámicos: cómo mostrar el campo de la clave principal en la lista

Por ejemplo, tengo una tabla que contiene códigos de estado, con dos campos.

StatusCode int identity Primary Key 
StatusCodeDescription varchar(25) 

En la página StatusCodes/List.aspx de mi sitio web, solo se muestra StatusCodeDescription.

que dan cuenta de que no puedo editar la clave principal, pero me gustaría muestran ella. ¿Es esto posible con datos dinámicos?

Puedo pensar en algunas soluciones yo mismo, y honestamente, podría profundizar en la documentación para encontrarla yo mismo, pero espero que alguien con más experiencia sepa la respuesta y pueda ahorrar algo de tiempo buscando. Un enlace a la documentación apropiada incluso sería bueno.

Respuesta

6

Después de pasar la mayor parte del día investigando, tengo otra respuesta que es probablemente más "correcta". Por lo que puedo ver, esto es sobre una base por tabla (lo que significa que tendría que hacer esto una vez por mesa)

Usando el atributo ScaffoldColumn:

extendí la clase que se genera automáticamente para la tabla (StatusCodes) utilizando una clase parcial de la siguiente manera:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.DynamicData; 
using System.ComponentModel.DataAnnotations; 

namespace ScholarshipAdmin 
{ 
    [MetadataType(typeof(StatusCodesMetaData))] 
    public partial class StatusCodes 
    { 

    } 

    public class StatusCodesMetaData 
    { 
     [ScaffoldColumn(true)] 
     public object StatusCode; 
    } 
} 
+0

¿utiliza datos dinámicos mucho? ¡Lo encontré enloquecedor! ¡Esto fue lo primero que tuve que hacer! (muestre la tecla pri) la gente pensó que estaba loco cuando lo pidieron y no pude mostrarlo –

+0

No, no lo uso mucho (todavía). Cuando publiqué esta pregunta, estaba trabajando en mi primer proyecto con Dynamic Data. Sin embargo, planeo usarlo más, donde sea apropiado. Principalmente para sitios administrativos, o aplicaciones CRUD rápidas y sucias. Incluso en mi proyecto actual, la mayor parte del trabajo se realizó utilizando formularios Asp.Net más estándar. Solo aproximadamente una décima parte del trabajo que se realiza en el sitio se realizará a través del sitio de Datos dinámicos. Probablemente sea por eso que aprecié acelerarlo rápidamente. – David

+0

@Scott Kramer - Actualización: ahora estoy utilizando datos dinámicos en la mayoría de los proyectos, por lo menos para una parte del trabajo. NOV que estoy averiguando, es mucho más amigable y más fácil de personalizar. – David

0

Encontré una posible respuesta yo mismo. Lo publicaré en caso de que alguien más busque la respuesta en el futuro. Tenga en cuenta que esto solo funcionará si todas las tablas tienen una una columna clave principal.

También voy a mantener esta pregunta en caso de que alguien más tenga una respuesta mejor y más simple que funcione con tablas que tienen varias claves principales. Preferiría seleccionar la respuesta de otra persona que la mía.

En List.aspx, agregué lo siguiente a GridView1.

<asp:TemplateField> 
    <HeaderTemplate> 
     <%# table.PrimaryKeyColumns[0].Name %> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <%# DataBinder.Eval(Container.DataItem, table.PrimaryKeyColumns[0].Name) %> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

¿Una clave principal? ¿No es esa la definición de una clave principal? –

+1

Lo sentimos: editamos esto para que diga "clave principal de una columna" en lugar de "una clave principal", ya que una clave principal puede contener más de una columna, y eso es lo que quise decir. ¡Gracias por preguntar, sin embargo! – David

Cuestiones relacionadas