2009-09-29 13 views
5

W końcu wkopię się w dane dynamiczne (dawno spóźnione). Zauważyłem, że gdy przeglądam stronę internetową, na listach głównych pól, pole klucza podstawowego nie jest wyświetlane.Dane dynamiczne - jak wyświetlić pole klucza głównego na liście

Na przykład mam tabelę zawierającą kody stanu z dwoma polami.

StatusCode int identity Primary Key 
StatusCodeDescription varchar(25) 

Na mojej stronie StanCodes/List.aspx mojej strony wyświetlany jest tylko statusCodeDescription.

Zdaję sobie sprawę, że nie mogę edycji klucz podstawowy, ale chciałbym pokazać niego. Czy jest to możliwe dzięki Dynamic Data?

Potrafię samodzielnie wymyślić pewne rozwiązania i, szczerze mówiąc, mogę zagłębić się w dokumentację, aby znaleźć to samemu, ale mam nadzieję, że ktoś z większym doświadczeniem zna odpowiedź i może zaoszczędzić mi trochę czasu. Link do odpowiedniej dokumentacji byłby nawet dobry.

Odpowiedz

6

Po spędzeniu większości dnia badania, mam inną odpowiedź, która jest prawdopodobnie bardziej "poprawna". Z tego co widzę, to jest na podstawie jednej tabeli (co oznacza, że ​​trzeba to zrobić raz na stole)

Korzystanie atrybut ScaffoldColumn:

I klasy, która przedłużyła się automatycznie wygenerowany dla tabeli (StatusCodes) przy użyciu klasy częściowej w następujący sposób:

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

używasz danych dynamicznych dużo? Znalazłem to denerwujące !!! To była pierwsza rzecz, którą musiałem zrobić! (pokaż klucz pri) ludzie myśleli, że oszalałem, kiedy o to prosili i nie mogłem tego wyświetlić –

+0

Nie, nie używam go zbyt wiele (jeszcze). Kiedy opublikowałem to pytanie, pracowałem nad moim pierwszym projektem wykorzystującym dane dynamiczne. Jednak planuję użyć go bardziej, gdzie jest to właściwe. Głównie dla stron administracyjnych lub szybkich i brudnych aplikacji CRUD. Nawet w moim obecnym projekcie większość prac została wykonana przy użyciu bardziej standardowych formularzy Asp.Net. Tylko około jedna dziesiąta prac wykonywanych na stronie zostanie wykonana za pośrednictwem witryny danych dynamicznych. To pewnie dlatego doceniane, że szybko się rozwija. – David

+0

@Scotta Kramer - Aktualizacja: Używam danych dynamicznych w większości projektów, przynajmniej na część pracy. NIE, że się nad tym zastanawiam, jest o wiele bardziej przyjazny i łatwiejszy do dostosowania. – David

0

Sam znalazłem jedną możliwą odpowiedź. Opublikuję to na wypadek, gdyby ktoś inny szukał odpowiedzi w przyszłości. Zauważ, że będzie to działać tylko wtedy, gdy wszystkie tabele mają jeden klucz podstawowy: jedną kolumnę.

Pozostawię też to pytanie na wypadek, gdyby ktoś inny miał lepszą, prostszą odpowiedź, która będzie działać z tabelami z wieloma kluczami podstawowymi. Wolałbym wybrać odpowiedź kogoś innego niż własną.

W liście List.aspx dodano następujące informacje do GridView1.

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

Jeden klucz podstawowy? Czy to nie jest definicja klucza podstawowego? –

+1

Przepraszam - edytowałem to, aby odczytać "klucz podstawowy jednej kolumny" zamiast "klucz podstawowy", ponieważ klucz podstawowy może składać się z więcej niż jednej kolumny i to właśnie miałem na myśli. Dziękuję za pytanie! – David

Powiązane problemy