web-dev-qa-db-fra.com

"Le fil d'alimentation n'était pas au bon format."

Je travaille sur un projet dans lequel j'ai un formulaire à travers lequel je peux éditer une question disponible dans une liste. Chaque fois que je sélectionne une ligne dans la vue liste et que je clique sur le bouton 'modifier', les zones de texte situées au-dessus de la vue liste chargent la question et ses options . le bouton 'modifier', la question se charge dans les zones de texte. J'édite la question ici et clique sur "enregistrer" pour enregistrer les modifications, mais je ne parviens pas à accéder aux données des zones de texte. Il dit {"Input string was not in a correct format."}.

Mon code du formulaire frmFormWizard 's' edit 'est donné ci-dessous:

frmFormWizard.cs Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;

namespace SurveyBuilder
{
    public partial class frmFormWizard : Form
    {
        int intPanelNumber = 1;
        Boolean blnCancel = false;
        //int intFlag = 1;

        public frmFormWizard()
        {
            InitializeComponent();
        }

        ...

        private void btnEditTwoOrMoreOptions_Click(object sender, EventArgs e)
        {
            int QuestionID;           
            string sql;

            QuestionID = Convert.ToInt32(lvTwoOrMoreOptions.SelectedItems[0].Text.ToString());
            {
                SqlConnection cn = new SqlConnection();
                SqlCommand rs = new SqlCommand();
                SqlDataReader sdr = null;
                clsConnection clsCon = new clsConnection();

                clsCon.fnc_ConnectToDB(ref cn);

                sql = "";
                sql += "SELECT * FROM SurveyQuestionLog WHERE SurveyQuestionLog.QuestionLogID = "+ QuestionID +"";
                //sql += "SELECT * FROM SurveyQuestionLog";

                rs.Connection = cn;
                rs.CommandText = sql;
                sdr = rs.ExecuteReader();

                while (sdr.Read())
                {
                    txtTwoOrMoreQuestions.Text = (string)sdr["Question"];
                    txtOption1.Text = (string)sdr["Choice1"];
                    ...
                }

                sdr.Close();
                rs = null;
                cn.Close();
            }
        }

Chaque fois que j'essaie de compiler le code, il indique "{"Input string was not in a correct format."}" et cette erreur est indiquée à la ligne suivante:

 QuestionID = Convert.ToInt32(lvTwoOrMoreOptions.SelectedItems[0].Text.ToString());

S'il vous plaît laissez-moi savoir ce que je fais mal.

11
Ahsan Hussain

Cela ressemble à de l’espace inclus dans le texte . 

lvTwoOrMoreOptions. SelectItems [0] .Text.ToString (). Trim ()

et convertir en int32.

espérons que ce code vous résoudra

Des commentaires

si votre ListView est en mode rapport (c'est-à-dire qu'il ressemble à une grille), vous aurez besoin de la propriété SubItems. lvTwoOrMoreOptions.SelectedItems récupère chacun des éléments de la vue liste - Sous-éléments récupère les colonnes. Donc lvTwoOrMoreOptions.SelectedItems[0].SubItems[0] est la valeur de la première colonne,

5
Sumeshk

chaque fois que j'essaie de compiler le code, il indique "{" La chaîne d'entrée n'était pas dans un format correct. "}" 

Cette erreur ne viendra pas lors de la compilation. 

Maintenant l'erreur vient parce que vous essayez d'analyser une chaîne invalide en entier. Pour le faire en toute sécurité, vous devriez le faire comme ceci

int questionID;
if(int.TryParse(vTwoOrMoreOptions.SelectedItems[0].Text.ToString(),out questionID))
{
//success code
}
else
{
 //failure code
}
1
Ehsan

Veuillez changer votre code comme ci-dessous.

  int QuestionID;

  bool IsIntValue = Int32.TryParse("YOUR-VARIABLE", out QuestionID);

  if (IsIntValue)
  {
      // YOUR CODE HERE  
  }

J'espère que je serai aider.

1
Ragesh S

Il semble que tout ce que le texte contient contient des caractères qui ne peuvent pas être convertis en nombres entiers tels que des espaces, des lettres, des caractères spéciaux, etc. Vérifiez ce qui arrive par le menu déroulant comme ci-dessous

lvTwoOrMoreOptions.SelectedItems[0].Text.ToString();

et voir si c'est le cas.

0
Kuzgun

Vous tentez peut-être d'accéder à un contrôle à l'intérieur d'un contrôle, par exemple un GridView ou un DetailsView.

Essayez d'utiliser quelque chose comme ça:

empsalary = Convert.ToInt32(((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).Text);
0
Manish Badhan