C# GridView Récupérer valeur d'une cellule
Bonjour,
Ayant déjà fais le tour de votre site, ainsi que d'autres, et n'ayant malheureusement toujours pas trouvé de moyen de m'en sortir, je viens poser une question qui je le sais vous a déjà été posée.
Dans les faits :
*Je créer un GridView
*Je le remplis avec un SqldataSource et un SelectCommand
*Je rajoute une colonne action qui possède un bouton détail
:ccool:
Tout ça ça marche ^^.
Et je voudrais que lorsque l'utilisateur clique sur le bouton détail s'affiche alors un autre GridView avec les données supplémentaire extraite de la base de donnée.
Mon problème est de réussir à récupérer la valeur clé de la ligne sur laquelle l'utilisateur clique (le linkbouton) pour que je puisse trouver toutes les données supplémentaire dans ma base.
Voici mon code :
Voici le code de de la GridView
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
<p class="corps">
<asp:GridView ID="gvContrat" OnRowCreated="gvContrat_OnRowCreated" OnRowCommand="gvContrat_OnRowCommand" runat="server" DataKeyNames="N_COD_NUMCONTRAT" AutoGenerateColumns="False" DataSourceID="SqlDataSourceAll" style="background-color: transparent; text-align: center; clear: both; table-layout: fixed; display: block; font-weight: normal; float: none; background-image: none; page-break-before: auto; page-break-after: auto; overflow: scroll; cursor: auto; color: black; line-height: normal; font-style: normal; letter-spacing: normal; border-collapse: collapse; font-variant: normal; text-decoration: none; border-right: #000033 thin solid; border-top: #000033 thin solid; border-left: #000033 thin solid; border-bottom: #000033 thin solid; left: 50px; position: absolute;" CellPadding="4" ForeColor="#333333" GridLines="None">
<Columns>
<asp:BoundField DataField="N_COD_NUMCONTRAT" HeaderText="N_COD_NUMCONTRAT" ReadOnly="True"
SortExpression="N_COD_NUMCONTRAT">
<HeaderStyle Width="70px" />
</asp:BoundField>
<asp:BoundField DataField="N_COD_NUMCOFFRE" HeaderText="Numéro du coffre"
SortExpression="N_COD_NUMCOFFRE" >
<HeaderStyle Width="70px" />
</asp:BoundField>
<asp:BoundField DataField="N_COD_NUMDOS" HeaderText="Numéro du dos" SortExpression="N_COD_NUMDOS" >
<HeaderStyle Width="70px" />
</asp:BoundField>
<asp:BoundField DataField="S_LIB_DESIGNATION" HeaderText="Désignation" SortExpression="S_LIB_DESIGNATION" >
<HeaderStyle Width="130px" />
</asp:BoundField>
<asp:BoundField DataField="S_LIB_NOMCONTRACTANT" HeaderText="Contractant" SortExpression="S_LIB_NOMCONTRACTANT" >
<HeaderStyle Width="130px" />
</asp:BoundField>
<asp:BoundField DataField="S_LIB_INITIALESCONTRACTANT" HeaderText="Initiales" SortExpression="S_LIB_INITIALESCONTRACTANT" >
<HeaderStyle Width="50px" />
</asp:BoundField>
<asp:BoundField DataField="S_LIB_NOMDIRECTION" HeaderText="Direction" SortExpression="S_LIB_NOMDIRECTION" >
<HeaderStyle Width="150px" />
</asp:BoundField>
<asp:BoundField DataField="SIGNATURE" HeaderText="Signataire ou interlocuteur" SortExpression="SIGNATURE" >
<HeaderStyle Width="150px" />
</asp:BoundField>
<asp:BoundField DataField="S_DAT_SIGNATURE" HeaderText="Date de signature du contrat" SortExpression="S_DAT_SIGNATURE">
<HeaderStyle Width="100px" />
</asp:BoundField>
<asp:BoundField DataField="S_DAT_FIN" HeaderText="Date de fin" SortExpression="S_DAT_FIN">
<HeaderStyle Width="100px" />
</asp:BoundField>
<asp:BoundField DataField="S_DAT_RESIL" HeaderText="Date de Résiliation" SortExpression="S_DAT_RESIL" >
<HeaderStyle Width="100px" />
</asp:BoundField>
<asp:BoundField DataField="S_DAT_FINARCHI" HeaderText="Date de fin d'archivage" SortExpression="S_DAT_FINARCHI" >
<HeaderStyle Width="100px" />
</asp:BoundField>
<asp:CheckBoxField DataField="B_BOL_SCANNE" HeaderText="Scanné" SortExpression="B_BOL_SCANNE" >
<HeaderStyle Width="90px" />
</asp:CheckBoxField>
<asp:CheckBoxField DataField="B_BOL_RECOND" HeaderText="Reconductible" SortExpression="B_BOL_RECOND" >
<HeaderStyle Width="90px" />
</asp:CheckBoxField>
<asp:CheckBoxField DataField="B_BOL_RESILIE" HeaderText="Résilié" SortExpression="B_BOL_RESILIE" >
<HeaderStyle Width="90px" />
</asp:CheckBoxField>
<asp:TemplateField HeaderText="Actions" >
<ItemTemplate>
<asp:LinkButton ID="action" OnClick="BtnTest_OnClick" Text="Détails" runat="server" Width="100px" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#000066" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
<asp:SqlDataSource SelectCommand="SELECT N_COD_NUMCONTRAT, N_COD_NUMCOFFRE, N_COD_NUMDOS, S_LIB_DESIGNATION, S_LIB_NOMCONTRACTANT, S_LIB_INITIALESCONTRACTANT, S_LIB_NOMDIRECTION, S_LIB_NOMSIGNATURE + S_LIB_PRENONSIGNATURE AS SIGNATURE, S_DAT_SIGNATURE, S_DAT_FIN, S_DAT_RESIL, S_DAT_FINARCHI, B_BOL_SCANNE, B_BOL_RECOND, B_BOL_RESILIE FROM contrat, signature, contractant, direction, designation WHERE contrat.N_COD_DESIGNATION = designation.N_COD_DESIGNATION AND contrat.N_COD_NUMCONTRACTANT = contractant.N_COD_NUMCONTRACTANT AND contrat.N_COD_NUMDIRECTION = direction.N_COD_NUMDIRECTION AND contrat.N_COD_NUMSIGNATURE = signature.N_COD_NUMSIGNATURE"
ID="SqlDataSourceAll" runat="server">"></asp:SqlDataSource>
</p> |
Malgré plusieurs test dans les évènements du GridView et du Bouton je suis toujours aussi embéter et je n'arrive toujours pas à récupérer la valeur de la cellule 0.
Mon code behind est celui-ci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
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;
using System.Data.SqlClient;
public partial class ShowAll : System.Web.UI.Page
{
private void Page_Load(Object sender, EventArgs e)
{
}
public void BtnTest_OnClick(object sender, EventArgs e)
{
}
public void gvContrat_OnRowCreated(object sender, EventArgs e)
{
//Label1.Text = ((TemplateField)((GridView)sender).Columns[15])
}
protected void gvContrat_OnRowCommand(object sender, EventArgs e)
{
//string val = ((GridView)sender).Rows[((GridView)sender).SelectedIndex].Cells[1].Text;
Label1.Text = ((GridView)sender).Rows[(int)(((GridView)sender).SelectedDataKey.Value)].Cells[0].GetType().ToString();
}
} |
Et l'erreur rapportée la plupart du temps quand je test mes différentes fonctions, ou plutôt les différentes idées que j'ai pu avoir pour récupérer la valeur d'une cellule en parcourant le net est celle-ci :
Citation:
La référence d'objet n'est pas définie à une instance d'un objet.
Ca fait déjà plusieurs jours que je planche la dessus, et impossible de trouver une solution.
Merci d'avance pour votre aide, je me sens un peu désarmé. :calim2: