Pb Gridview dans une gridview

Signaler
Messages postés
15
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
11 février 2009
-
Messages postés
15
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
11 février 2009
-
Bonjour je voudrais mettre une grid view dans une gridview avec des info de deux tables(ORDER et JOB) en relation,
j'ai donc suivi un exemple
La gridview Parent est la numero GridView3 attaché à la datasource SqlDataSource5
La gridview Enfantest la numero GridView4 attaché à la datasource SqlDataSource4

Le lien est l'identifiant order_id rappelé dans chaque Job associé

Le probleme est que lorque j'execute le code les données de la gridview4 affichées sur chaque ligne sont identique et corresponde au dernier Order_Id:

<tr><th scope= "col">Order_Id    </th><th scope="col">Order_Name  </th><th scope="col"> </th>

</tr><tr><td>21               Ordre1

Job_Name |Job_Status |----
test, 0, ----
ooiuu, 0, ----
toto az la plage, 0

</td></tr><tr style ="BACKGROUND-COLOR: white"><td>
22               Ordre2
Job_Name |Job_Status |----
test, 0, ----
ooiuu, 0, ----
toto az la plage, 0
</td></tr><tr><td>
23               Ordre3</td><td>
Job_Name |Job_Status |----
test, 0, ----
ooiuu, 0, ----
toto az la plage, 0

</td></tr>
Les données de la  grid view enfant sont repetée sur chaque ligne au lieu de récuperer les données associé à l'order id de la ligne

Code:

<asp:GridView
ID="GridView3"
runat="server"
AutoGenerateColumns="False"

DataSourceID="SqlDataSource5"
Width="470px"
DataKeyNames="Order_Id"

onrowdatabound="GridView3_RowDataBound">

<Columns>

<asp:BoundField
DataField="Order_Id"
HeaderText="Order_Id"

SortExpression="Order_Id"
InsertVisible="False"
ReadOnly="True"
/>

<asp:BoundField
DataField="Order_Name"
HeaderText="Order_Name"

SortExpression="Order_Name"
/>

<asp:TemplateField>

<ItemTemplate>

<asp:GridView
ID="GridView4"
runat="server"
AutoGenerateColumns="False"

DataSourceID="SqlDataSource4"
Width="470px"
>

<Columns>

<asp:BoundField
DataField="Job_Name"

HeaderText="Job_Name"

SortExpression="Job_Name"

InsertVisible="False"

ReadOnly="True"/>

<asp:BoundField
DataField="Job_Status"

HeaderText="Job_Status"

SortExpression="Job_Status"

InsertVisible="False"

ReadOnly="True"/>

</Columns>

</asp:GridView>

</ItemTemplate>

</asp:TemplateField>

</Columns>

</asp:GridView>

<asp:SqlDataSource
ID="SqlDataSource4"
runat="server"

ConnectionString="<%$ ConnectionStrings:Shooter_Test1ConnectionString %>
"

SelectCommand="SELECT [Job_Name], [Job_Priority], [Job_Status] FROM [Job] WHERE ([Order_Id] = @Order_Id)"

EnableViewState="False"
ondatabinding="SqlDataSource4_DataBinding"

onselected="SqlDataSource4_Selected"
onselecting="SqlDataSource4_Selecting">

<SelectParameters>

<asp:Parameter
Name="Order_Id"
Type="Int32"
/>

</SelectParameters>

</asp:SqlDataSource>

<asp:SqlDataSource
ID="SqlDataSource5"
runat="server"

ConnectionString="<%$ ConnectionStrings:Shooter_Test1ConnectionString %>
"

SelectCommand="SELECT [Order_Id],[Order_Name], [Order_Priority], [Order_Status] FROM [Order] ">

</asp:SqlDataSource>

protected

void GridView3_RowDataBound(
object sender,
GridViewRowEventArgs e){

      if (e.Row.RowType ==
DataControlRowType.DataRow)      {

      //SqlDataSource s = (SqlDataSource)e.Row.FindControl("SqlDataSource4");

      // s.SelectParameters[0].DefaultValue = e.Row.Cells[0].Text;      SqlDataSource4.SelectParameters[0].DefaultValue = e.Row.Cells[0].Text;

      //SqlDataSource4.DataBind();

      }

}

Merci d'avance

2 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Messages postés
15
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
11 février 2009

Merci de ton aide mais je n'arrive pas à trouvé la solution pour que le parametres identifiant passé à la deuxieme gridview soit seulement celui de la ligne correspondante

void GridView3_RowDataBound(object sender, GridViewRowEventArgs e)
{

      if (e.Row.RowType == DataControlRowType.DataRow)
      {

      //SqlDataSource s = (SqlDataSource)e.Row.FindControl(\"SqlDataSource4\");

      // s.SelectParameters[0].DefaultValue = e.Row.Cells[0].Text;      SqlDataSource4.SelectParameters[0].DefaultValue = e.Row.Cells[0].Text;

      //SqlDataSource4.DataBind();

      }

Le probleme c'est que ce sont les données de la derniere ligne qui sont repeté dans les gridview imbriquée

Si vous avez des idées

Merci d'avance