web-dev-qa-db-fra.com

Repérer une liste déroulante

Quand j'essaie de dater dropdownlist, j'ai ceci: system.data.datarowview
qu'est-ce que je me trompe?

 string strQuery = "Select Item FROM Calendar Where UserD="Test";
 SqlConnection myConn;
 SqlDataAdapter sqlDa = new SqlDataAdapter(strQuery,myConn);
 DataTable sqlTa = new DataTable("Test");
 da.Fill(sqlTa);
 ddlList.DataSource = sqlTa;
 ddlList.DataBind();
7
Will_G
string strQuery = "Select Item FROM Calendar Where UserD='Test'";

Notez que vous devez utiliser des guillemets simples autour de la chaîne, car dans votre code, vous n'avez jamais terminé la chaîne initiale. Le reste du code est donc devenu une partie intégrante de strQuery.

En outre si vous ramenez plus d'un champ à l'avenir , lorsque vous liez une liste déroulante, vous devez spécifier quel champ de la base de données correspond à la valeur et quel est le texte affiché.

ddlList.DataSource = sqlTa;
ddlList.DataValueField = "ValueFieldFromDatabaseResults";
ddlList.DataTextField = "ShownTextFieldFromDatabaseResults";
ddlList.DataBind();
14
Ryan McDonough

Vous devez lui indiquer quels champs utiliser comme valeur et texte.

ddlList.DataSource = sqlTa;
ddlList.DataValueField = "ValueField";
ddlList.DataTextField = "TextField";
ddlList.DataBind();

Et votre déclaration sélectionnée manque un ". Il devrait être:

"Select Item FROM Calendar Where UserD='Test'"

Un exemple étant:

Comme Ryan l'a souligné, si vous retirez un champ, vous pouvez simplement faire:

        DataTable dtTable = new DataTable();

        try
        {
            using (SqlConnection sqlConnection = new SqlConnection("Your connection"))
            {
                using (SqlCommand sqlCommand = new SqlCommand("Select Item FROM Calendar Where UserD='Test'", sqlConnection))
                {
                    sqlConnection.Open();

                    using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
                    {
                        dtTable.Load(sqlDataReader);
                        sqlDataReader.Close();
                    }
                }
            }
        }
        catch (Exception error)
        {
            throw error;
        }

        ddlList.DataSource = dtTable;
        ddlList.DataBind();

Mais si vous avez plus d'un champ, vous pouvez le faire:

        DataTable dtTable = new DataTable();

        try
        {
            using (SqlConnection sqlConnection = new SqlConnection("Your connection"))
            {
                using (SqlCommand sqlCommand = new SqlCommand("Select Item, id FROM Calendar Where UserD='Test'", sqlConnection))
                {
                    sqlConnection.Open();

                    using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
                    {
                        dtTable.Load(sqlDataReader);
                        sqlDataReader.Close();
                    }
                }
            }
        }
        catch (Exception error)
        {
            throw error;
        }

        ddlList.DataSource = dtTable;
        ddlList.DataValueField = "id";
        ddlList.DataTextField = "item";
        ddlList.DataBind();
2
Stephen

ajoute cette ligne

ddlList.DataSource = sqlTa;
ddlList.DataValueField = "ValueFieldFromDatabaseResults";
ddlList.DataTextField = "ShownTextFieldFromDatabaseResults";
ddlList.DataBind();

alors vous manquez la chaîne de connexion pour

SqlConnection myConn="must add your connection string code here "

Vous n'avez pas de chaîne de connexion ouverte, donc

ajouter myconn.open()

for

 SqlConnection myConn="must add your connection string code here "
`myconn.open()`
 SqlDataAdapter sqlDa = new SqlDataAdapter(strQuery,myConn)
1
user1193035

Essaye ça..

 ddlList.DataSource = sqlTa;                 
 ddlList.DataTextField = "class";
 ddlList.DataBind();

l'ajout de ddList.Value="somefield" est facultatif

0
Arbaaz