[ASPX][C#] DataGrid - EDIT - dropdownlist

tobleronne Messages postés 104 Date d'inscription vendredi 8 août 2003 Statut Membre Dernière intervention 1 mars 2005 - 3 mars 2004 à 16:38
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 3 mars 2004 à 22:01
Bonjour,

J'ai un datagrid qui se compose de colonnes classique,
et lorsque je suis en mode edition je voudrais que l'une des colonne soit un dropdownlist et non un textBox.

mais lorsque je veux remplir mon dropdownlist on me dit : "La référence d'objet n'est pas définie à une instance d'un objet."

J'ai essayé de regardé sur le net et l'anglais et moi ca fait 2 ou alors je n'ai rien compris.

Es ce qq'un aurait un exemple simple en c#.

voila mon code aspx :

Code:


<Columns>





' />

<EditItemTemplate>

</EditItemTemplate>





" />

</Columns>


voila mon code cs :

Code:

protected void editOperation(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e){
myDataGrid.EditItemIndex = e.Item.ItemIndex;
myDataGrid.SelectedIndex = e.Item.ItemIndex;

oSqlCommand = new SqlCommand("SELECT * FROM table",Connection);

oDropDownList.DataSource = oSqlCommand.ExecuteReader();
oDropDownList.DataValueField = "id";
oDropDownList.DataTextField = "libelle";
oDropDownList.DataBind();

dataGridBindData();

}

voila merci

6 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
3 mars 2004 à 19:35
l'erreur vient peut du fait que je crois que quand on est code behind on ne peut pas appeller les procedures comme tu le fais il faut pour cela :

declarer une instance de ton controle dans le code (dsl je connais pas C# donc c du VB)

Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid

et mettre le code la dedans :

Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand

End Sub

Sinon ton message d'erreur, moi ca me me met le meme qd je fais par exemple
dim s as machin au lieu de dim s as new machin

Sinon essaye d'enlever ta requete SQL et gere ton dropdownlist directement avec un tableau de test je fais souvent comme ca moi :

oDropDownList.DataSource = split("1,2,3,4,5,6,7,8,9",",")

Si ca marche pas, je regarderais ca plus en détail demain :)

Bon coding

Cyril (Alias Jesusonline)
0
tobleronne Messages postés 104 Date d'inscription vendredi 8 août 2003 Statut Membre Dernière intervention 1 mars 2005
3 mars 2004 à 20:19
merci deja de t'etre peché sur mon cas ;o)

de mon coté j'ai avancé, j'alimente mon dropdownlist coté aspx, plus pratique d'ailleurs, par contre j'arrive pas a faire le selected index.

faudraut que j'appele une fonction dans le selectedIndex de ma dropdownlist, mais le traitement apres je cale.

Je te montre :
---------------

code aspx :

<Columns>

' />

<EditItemTemplate>
' DataTextField="libelle" DataValueField="id" />
</EditItemTemplate>

" />

</Columns>

code behind :

void typeDataView(){
if(oGen.connBdd()){
string cQuery = "SELECT * FROM type";
SqlDataAdapter oSqlDataAdapter2;

oSqlDataAdapter2 = new SqlDataAdapter(cQuery,oGen.selectConnection);

oDataSet2 = new DataSet("type");
oSqlDataAdapter2.Fill(oDataSet2,"type");
oDataViewType =new DataView(oDataSet2.Tables["type"]);
oGen.deconnBdd();
}
}

protected DataView getTypeOperation{
get{return oDataViewType;}
}

protected void editOperation(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e){
myDataGrid.EditItemIndex = e.Item.ItemIndex;
myDataGrid.SelectedIndex = e.Item.ItemIndex;
typeDataView();
dataGridBindData();
}

Si t'as une idee je suis preneur

@+
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
3 mars 2004 à 20:50
Essaye ca je suis pas sur de moi par contre j'ai trouvé ca sur le MSDN

(dsl pour le VB)

        Dim l As System.Web.UI.WebControls.DropDownList

        l = CType(e.Item.FindControl("oDropDownList"), DropDownList)

        If Not (l Is Nothing) Then

            Response.Write(l.SelectedValue)

        End If


Bon courage

Cyril (Alias Jesusonline)
0
tobleronne Messages postés 104 Date d'inscription vendredi 8 août 2003 Statut Membre Dernière intervention 1 mars 2005
3 mars 2004 à 21:36
Non marche pas : l est null ?!?

sinon je fais une bidouille, si tu as mieux previens moi

j'ai cree une colonne invisible dans mon datagrid avec l'id que je devait recupere puis comme le selectedIndex du datagrid n'accepte que les integer alors je boucle et lui renvoie un chiffre.

for(short i=0;i<=oDataSet2.Tables["type"].Rows.Count;i++){
if(e.Item.Cells[4].Text==i.ToString()){
dropDownListSelectedIndex = i-1;
break;
}
}

voila ;o)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tobleronne Messages postés 104 Date d'inscription vendredi 8 août 2003 Statut Membre Dernière intervention 1 mars 2005
3 mars 2004 à 21:39
mieux encore, au lieu de boucler je fais :

dropDownListSelectedIndex = Convert.ToInt16(e.Item.Cells[4].Text) - 1;
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
3 mars 2004 à 22:01
J'ai pas compris ta méthode mais j'essaierai d'y regarder ce week end

mais si ca marche c'est le principal @+

Cyril (Alias Jesusonline)
0
Rejoignez-nous