Witajcie:)
bawię się od pewnego czasu w .net i pojawił się następujący problem.
Mam bazę danych Zadanie, a w niej 3 tabele: Pracownik, Oddzial, Stanowisko.
W visual studio 2005 stworzyłem sobie GridView, który w postaci tabeli wyświetla dane z oddziału (id_oddzial, id_pracownika, oddzial).
Do tego dołożyłem 2 kolumny: Pracownik i Stanowisko, które w określonym wierszu mają wyświetlać rekordy właściwe dla danego id_pracownika (poprzez edit templates). I tutaj pojawia się problem, bo o ile dane z oddziału są wyświetlane to pracownika i stanowiska już nie.
Poniżej załączam kod. Ktoś pomoże?
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Strona1.aspx.cs" Inherits="Default3" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id_oddzial"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="Id_oddzial" HeaderText="Id_oddzial" ReadOnly="True" SortExpression="Id_oddzial" />
<asp:BoundField DataField="Oddzial" HeaderText="Oddzial" SortExpression="Oddzial" />
<asp:BoundField DataField="Id_pracownika" HeaderText="Id_pracownika" SortExpression="Id_pracownika" />
<asp:TemplateField HeaderText="Pracowicy">
<ItemTemplate>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="Id_pracownika"
DataSourceID="pracownicy">
<Columns>
<asp:BoundField DataField="Id_pracownika" HeaderText="Id_pracownika" ReadOnly="True"
SortExpression="Id_pracownika" />
<asp:BoundField DataField="Imie" HeaderText="Imie" SortExpression="Imie" />
<asp:BoundField DataField="Nazwisko" HeaderText="Nazwisko" SortExpression="Nazwisko" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="pracownicy" runat="server" ConnectionString="<%$ ConnectionStrings:ZadanieConnectionString %>"
SelectCommand="SELECT [Id_pracownika], [Imie], [Nazwisko] FROM [Pracownik] WHERE ([Id_pracownika] = @Id_pracownika)">
<SelectParameters>
<asp:Parameter Name="Id_pracownika" Type="Int16"/>
</SelectParameters>
</asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Stanowisko">
<ItemTemplate>
<asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource3">
<Columns>
<asp:BoundField DataField="Stanowsko" HeaderText="Stanowsko" SortExpression="Stanowsko" />
<asp:BoundField DataField="Id_pracownika" HeaderText="Id_pracownika" SortExpression="Id_pracownika" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:ZadanieConnectionString %>"
SelectCommand="SELECT [Stanowsko], [Id_pracownika] FROM [Stanowisko] WHERE ([Id_pracownika] = @Id_pracownika)">
<SelectParameters>
<asp:Parameter Name="Id_pracownika" Type="Int16" />
</SelectParameters>
</asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ZadanieConnectionString %>"
SelectCommand="SELECT [Oddzial], [Id_oddzial], [Id_pracownika] FROM [Oddzial]"></asp:SqlDataSource>
</asp:Content>
Kod z aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
SqlDataSource s = (SqlDataSource)e.Row.FindControl("pracownicy");
s.SelectParameters[0].DefaultValue = e.Row.Cells[0].Text;
}
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
}