0
votes

C # La propriété SelectCommand n'a pas été initialisée avant d'appeler 'Fill'. dans WinForm

J'essaie de renseigner programmatiquement DataGridView sur mon formulaire Windows avec DB Data, mais je fais évidemment quelque chose de mal. XXX

Quand j'essaie de l'exécuter, il met en évidence Dadavaoci et dit: exception Systeme non gérée.InvalidoperationException: «La propriété SelectCommand n'a pas été initialisée avant d'appeler« Remplir ».


0 commentaires

4 Réponses :


0
votes

Essayez de modifier cette section de code en quelque chose comme ceci:

MyGrid.DataSource = ds;

Ensuite, vous pouvez attacher votre ensemble de données à votre grille.

Quelque chose comme:

XXX

Plus d'informations ici: https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqldataadapter?view=netframework-4.8

p >


0 commentaires

0
votes

Cela devrait être corrigé car il n'y a rien dans la commande sql

using (connection = new SqlConnection(connectionString)) 
{
 using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Davaoci",connection ))
       {
            SqlCommandBuilder commandBuilder = new SqlCommandBuilder(adapter);
            DataTable table = new DataTable
            {
                Locale = CultureInfo.InvariantCulture
            };
            dataAdapter.Fill(table);
            YourDataGridView.DataSource = table;
        }
}

Par exemple, veuillez parcourir ceci Comment: lier des données au contrôle DataGridView Windows Forms


0 commentaires

1
votes

Vous utilisez le mauvais sqladapter.

au sommet Vous créez un adaptateur nommé dadavoci : xxx

mais que vous n'acceptez aucun commandement et aucune connexion. < P> En bas, vous créez un nouvel adaptateur nommé Adaptateur (avec connexion et commandement). Mais alors vous utilisez à nouveau l'adaptateur du haut qui n'a toujours pas de commandementText et aucune connexion. xxx

Vous devez utiliser l'adaptateur que vous avez créé qui contient une connexion COMMANTEXT et une connexion comme cette xxx

Je ne sais pas exactement ce que vous essayez de faire, mais je pense que l'initialisation des deux adaptateurs sur le dessus de votre code n'a pas de sens (à moins pour moi). Je ne stockerais pas la connexion ni l'adaptateur dans une classeVariable, mais créer de nouveaux lorsque vous en avez besoin. (Si vous utilisez le mot-clé à l'aide de l'utilisation de l'utilisation de l'utilisation de l'utilisation de l'utilisation de l'utilisation. Ainsi, utilisez et créez de nouvelles instances dans lesquelles vous en avez besoin ou en faites une classevariable et ne pas utiliser à l'aide) < / p>


1 commentaires

Merci mon pote, tu as beaucoup aidé. La solution était si simple mais je ne pouvais pas la voir à l'époque.



0
votes

Voici ce que j'ai fait pour résoudre mon problème:

namespace UDDKT
{
    public partial class Form2 : Form
    {
        DataSet ds = new DataSet();
        SqlDataAdapter DaDavaoci = new SqlDataAdapter();
        SqlDataAdapter DaAkcije = new SqlDataAdapter();
        SqlConnection cs = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\UDDKT.mdf;Integrated Security=True");

        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            SqlCommand SlctDavaoci = new SqlCommand("SELECT * FROM Davaoci", cs);
            DaDavaoci.SelectCommand = SlctDavaoci;
            DaDavaoci.Fill(ds, "TblDavaoci");

            SqlCommand SlctAkcije = new SqlCommand("SELECT * FROM AkcijaDDK", cs);
            DaAkcije.SelectCommand = SlctAkcije;
            DaAkcije.Fill(ds, "TblAkcije");

            DgDavaoci.DataSource = ds.Tables["TblDavaoci"];
            DgAkcije.DataSource = ds.Tables["TblAkcije"];
        }
    }
}


0 commentaires