Strona główna » Carckowanie » lang csharp » ASP .NET 2.0 - prosty problem z gridem
ASP .NET 2.0 - prosty problem z gridem [wiadomość #713] pon, 02 lipiec 2007 17:54 Przejdź do następnej wiadomości
Slawomir jest aktualnie niedostępny Slawomir
Wiadomości: 4
Dołączył(a): lipiec 2007
Junior Member
Witam serdecznie.

Mam pytanie związane z gridem. Wyobraźmy sobie taką sytuację:
Jest sobie w bazie tabela z zadaniami, która ma następującą strukturę:

id_zadania (int)
id_pracownika(int)
zadanie (text)

obok oczywiście istnieje tablica pracownicy

id_pracownika
nazwisko

tabele połączone są oczywiście odpowiednią relacją po id_pracownika

W gridzie chciałbym prezentować zamiast id_pracownika - jego nazwisko.
Pytanie brzmi tak: W jaki sposób rozwiązujecie problem wyświetlania
danych przy możliwości ich edycji? W momencie gdy chcemy użyć trybu
edycji sprawa jest prosta - pole w gridzie typu template i ładujemy do
niego combobox. Ale co w przypadku, gdy jesteśmy w trybie oglądania
danych? Do labela nie da się podpiąć datasource i wskazać pól
zawierających text i wartość.

Mogę sobie wyciągnąć odpowiednim selectem z joinem dane (Select
z.id_zadania, p.nazwisko, z.zadanie from zadania z join pracownicy p on
z.id_zadania=p.id_zadania) i updatować dane w ten sposób:
Update zadania set id_pracownika = (select id_pracownika from pracownicy
where nazwisko = @nazwisko), zadania = @zadanie
ale chyba nie jest to to, o co mi chodzi a już na pewno nie jest to
wydajny mechanizm z punktu widzenia bazy danych. Jak więc sobie poradzić
z takim problemem zgodnie ze sztuką ?

z góry dzięki za podpowiedzi,

pozdrawiam
Sławek
Re: ASP .NET 2.0 - prosty problem z gridem [wiadomość #714 (odpowiedź na #713) ] pon, 02 lipiec 2007 19:21 Przejdź do poprzedniej wiadomościPrzejdź do następnej wiadomości
Yamma jest aktualnie niedostępny Yamma
Wiadomości: 14
Dołączył(a): maj 2007
Junior Member
Użytkownik "Slawomir" <spasko.usunto@o2.pl> napisał w wiadomości
news:f6bs6q$o03$1@node1.news.atman.pl...
> Witam serdecznie.
>
> Mam pytanie związane z gridem. Wyobraźmy sobie taką sytuację:
> Jest sobie w bazie tabela z zadaniami, która ma następującą strukturę:
>
> id_zadania (int)
> id_pracownika(int)
> zadanie (text)
>
> obok oczywiście istnieje tablica pracownicy
>
> id_pracownika
> nazwisko
>
> tabele połączone są oczywiście odpowiednią relacją po id_pracownika
>
> W gridzie chciałbym prezentować zamiast id_pracownika - jego nazwisko.
> Pytanie brzmi tak: W jaki sposób rozwiązujecie problem wyświetlania danych
> przy możliwości ich edycji? W momencie gdy chcemy użyć trybu edycji sprawa
> jest prosta - pole w gridzie typu template i ładujemy do niego combobox.
> Ale co w przypadku, gdy jesteśmy w trybie oglądania danych? Do labela nie
> da się podpiąć datasource i wskazać pól zawierających text i wartość.

Przeanalizuj sobie poniższy przykład:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="id_zadania"
DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="zadanie" HeaderText="zadanie"
SortExpression="zadanie" />
<asp:TemplateField HeaderText="nazwisko" SortExpression="nazwisko">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource2"
DataTextField="nazwisko" DataValueField="id_pracownika"
SelectedValue='<%# Bind("id_pracownika") %>'>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("nazwisko")
%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:zadaniaConnectionString %>"
SelectCommand="SELECT id_zadania, id_pracownika, zadanie, nazwisko FROM
zadania INNER JOIN pracownicy ON zadania.id_pracownika =
pracownicy.id_pracownika"
UpdateCommand="UPDATE zadania SET
zadanie=@zadanie,id_pracownika=@id_pracownika WHERE id_zadania=@id_zadania">
<UpdateParameters>
<asp:ControlParameter ControlID="GridView1" Name="zadanie"
PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="GridView1" Name="id_pracownika"
PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="GridView1" Name="id_zadania"
PropertyName="SelectedValue" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:zadaniaConnectionString %>"
SelectCommand="SELECT * FROM [pracownicy]"></asp:SqlDataSource>

yamma
Re: ASP .NET 2.0 - prosty problem z gridem [wiadomość #721 (odpowiedź na #714) ] śro, 04 lipiec 2007 02:25 Przejdź do poprzedniej wiadomości
Slawomir jest aktualnie niedostępny Slawomir
Wiadomości: 4
Dołączył(a): lipiec 2007
Junior Member
Yamma napisał(a):
> Przeanalizuj sobie poniższy przykład:
>
> <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
> AllowSorting="True" AutoGenerateColumns="False"
> DataKeyNames="id_zadania" DataSourceID="SqlDataSource1">
> <Columns>
> <asp:CommandField ShowEditButton="True" />
> <asp:BoundField DataField="zadanie" HeaderText="zadanie"
> SortExpression="zadanie" />
> <asp:TemplateField HeaderText="nazwisko" SortExpression="nazwisko">
> <EditItemTemplate>
> <asp:DropDownList ID="DropDownList1" runat="server"
> DataSourceID="SqlDataSource2"
> DataTextField="nazwisko" DataValueField="id_pracownika"
> SelectedValue='<%# Bind("id_pracownika") %>'>
> </asp:DropDownList>
> </EditItemTemplate>
> <ItemTemplate>
> <asp:Label ID="Label1" runat="server" Text='<%# Bind("nazwisko")
> %>'></asp:Label>
> </ItemTemplate>
> </asp:TemplateField>
> </Columns>
> </asp:GridView>
> <asp:SqlDataSource ID="SqlDataSource1" runat="server"
> ConnectionString="<%$ ConnectionStrings:zadaniaConnectionString %>"
> SelectCommand="SELECT id_zadania, id_pracownika, zadanie, nazwisko
> FROM zadania INNER JOIN pracownicy ON zadania.id_pracownika =
> pracownicy.id_pracownika"
> UpdateCommand="UPDATE zadania SET
> zadanie=@zadanie,id_pracownika=@id_pracownika WHERE
> id_zadania=@id_zadania">
> <UpdateParameters>
> <asp:ControlParameter ControlID="GridView1" Name="zadanie"
> PropertyName="SelectedValue" />
> <asp:ControlParameter ControlID="GridView1" Name="id_pracownika"
> PropertyName="SelectedValue" />
> <asp:ControlParameter ControlID="GridView1" Name="id_zadania"
> PropertyName="SelectedValue" />
> </UpdateParameters>
> </asp:SqlDataSource>
> <asp:SqlDataSource ID="SqlDataSource2" runat="server"
> ConnectionString="<%$ ConnectionStrings:zadaniaConnectionString %>"
> SelectCommand="SELECT * FROM [pracownicy]"></asp:SqlDataSource>
>
> yamma

Dzięki, właśnie o to chodziło.
Sławek
Poprzedni wątek:odczytywanie procedury z bazy
Następny wątek:Potwierdzenie dostarczenia informacji do webserwisu
Idź do forum:
  


Aktualna data: czw lut 9 23:29:34 EST 2012

Łączny czas generowania strony wyniósł 0,01904 sekund.
.:: Kontakt :: 901 sprawdz strone no host no host 906 906 Strona główna ::.

Powered by: FUDforum 2.7.6.
Copyright ©2001-2006 FUD Forum Bulletin Board Software