Accès aux colonnes d'un datagrid [Résolu]

Signaler
Messages postés
31
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
-
Messages postés
31
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
-
Salut,
J'ai un problème avec un datagrid. Il contient deux boutons : supprimer et modifier, ainsi que toutes les données d'une table. (select *). Ma page aspx doit pouvoir mettre à jour les données de n'importe quelle table Oracle. Je ne connais donc pas à l'avance le nombre et le nom des colonnes que je vais avoir à traiter.
Lors d'un click sur le bouton update d'une ligne, je parcours tous les controls de la ligne et j'en récupère chaque valeur afin de construire une requête d'update. Mon problème, c'est que je n'arrive pas à parcourir les colonnes pour en récupérer leur nom. Et j'ai besoin des noms de colonnes pour construire mon update (UPDATE nomTable SET nom_col1 = valeur1 ...).
J'ai bien essayé de passer directement par le datagrid : (DataGrid1.Columns.Count), mais ça ne détecte que les colonnes où il y a les boutons (donc 2 colonnes). Les autes ne sont pas prises en compte alors qu'elles s'affichent correctement.

Voici la procédure d'update : c'est quand on clique sur un bouton update dans le datagrid

private void updateRow(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
String commandeSQL="";
try{
ErrorMessage.Text = "";
OracleCommand updCommand = new OracleCommand();
updCommand.Connection = oracleConnection1;

//ICI GENERATION DE LA REQUETE SQL
//Label au dessus du text grid
ErrorMessage.Text "nbCellsTotal " + e.Item.Cells.Count + " Pour le DG " + DataGrid1.Columns.Count;

for (int i = 2 ; i<e.Item.Cells.Count ; i++){
commandeSQL += "";
//concaténation des valeurs des textBox
commandeSQL += ((TextBox)e.Item.Cells[i].Controls[0]).Text + " ";
}

//commandeSQL = "";
//FIN DE GENERATION DE LA REQUETE SQL

//a venir
updCommand.CommandText = ""; //On affecte requete SQL
updCommand.CommandType = CommandType.Text;
//oracleConnection1.Open();
//updCommand.ExecuteNonQuery();
oracleDataAdapter1.Fill(dataSet1);
DataGrid1.EditItemIndex = -1;
bindGrid();
oracleConnection1.Close();
}
catch(Exception ex){
ErrorMessage.Text = ex.Message;
ErrorMessage.Text += commandeSQL;
}
}


Voici les membres de ma classe :

protected System.Data.OracleClient.OracleDataAdapter oracleDataAdapter1;
protected System.Data.OracleClient.OracleCommand oracleSelectCommand1;
//protected System.Data.OracleClient.OracleCommand oracleInsertCommand1;
protected System.Data.OracleClient.OracleConnection oracleConnection1;
protected System.Data.DataSet dataSet1;
protected System.Web.UI.WebControls.Label ErrorMessage;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected String nomCompletTable = "";


Pour infos la méthode bindGrid

private void bindGrid(){
if (oracleConnection1.State != ConnectionState.Open)
{
oracleConnection1.Open();
}
oracleDataAdapter1.Fill(dataSet1);
DataGrid1.DataBind();
oracleConnection1.Close();
}


Voici le code aspx :

<%@ Page language="c#" Codebehind="EntityForm.aspx.cs" AutoEventWireup="false" Inherits="testDataGrid.EntityForm" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>EntityForm</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>

<form id="Form1" method="post" runat="server">
" PageSize="8" AllowPaging="True">
<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>

<HeaderStyle Font-Bold ="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>
<FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>
<Columns>


</Columns>



Label</form>

</HTML>




Avez vous une idée pour accéder au nom des colonnes de mon datagrid ?

1 réponse

Messages postés
31
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

C'est bon c'est solutionné en utilisant des variables de session