wake-up-neo.net

Msgstr "Eingabezeichenfolge hatte kein korrektes Format."

Ich arbeite an einem Projekt, in dem ich ein Formular habe, mit dem ich eine Frage bearbeiten kann, die in einer Listenansicht verfügbar ist. Immer wenn ich eine Zeile in der Listenansicht auswähle und auf die Schaltfläche "Ändern" klicke, werden die Frage und ihre Optionen in die Textfelder über der Listenansicht geladen. Dies bedeutet, wenn ich eine Zeile in der Listenansicht auswähle und auf klicke Mit der Schaltfläche "Ändern" wird die Frage in die Textfelder geladen. Ich bearbeite die Frage dort und klicke auf "Speichern", um die Änderungen zu speichern. Ich kann jedoch nicht auf die Daten in den Textfeldern zugreifen. Es sagt {"Input string was not in a correct format."}.

Mein Code des Formulars frmFormWizard 's Edit-Button ist unten angegeben:

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();
            }
        }

Immer wenn ich versuche, den Code zu kompilieren, wird "{"Input string was not in a correct format."}" angezeigt und dieser Fehler wird in der folgenden Zeile angezeigt:

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

Bitte lassen Sie mich wissen, was ich falsch mache.

11
Ahsan Hussain

Es sieht so aus, als ob etwas Platz im Text enthalten wäre 

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

und konvertieren Sie in int32.

ich hoffe, dieser Code wird Sie lösen

Aus den Kommentaren

wenn sich Ihre ListView im Berichtsmodus befindet (d. h. sie sieht aus wie ein Raster), benötigen Sie die SubItems-Eigenschaft. lvTwoOrMoreOptions.SelectedItems ruft jedes Element in der Listenansicht auf - SubItems enthält die Spalten. lvTwoOrMoreOptions.SelectedItems[0].SubItems[0] ist also der erste Spaltenwert,

5
Sumeshk

immer wenn ich versuche, den Code zu kompilieren, heißt es "{" Die Eingabezeichenfolge hatte kein korrektes Format. "}" 

Dieser Fehler wird beim Kompilieren nicht auftreten. 

Nun tritt der Fehler auf, weil Sie versuchen, eine ungültige Zeichenfolge in eine Ganzzahl zu analysieren. Um dies auf sichere Art und Weise zu tun, sollten Sie es so machen

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

Bitte ändern Sie Ihren Code wie folgt.

  int QuestionID;

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

  if (IsIntValue)
  {
      // YOUR CODE HERE  
  }

Ich hoffe ich werde helfen.

1
Ragesh S

Es sieht so aus, als ob der Text einige Zeichen enthält, die nicht in Ganzzahlen umgewandelt werden können, wie Leerzeichen, Buchstaben, Sonderzeichen usw. Überprüfen Sie, was in der Dropdown-Liste unten angezeigt wird

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

und sehen, ob das der Fall ist.

0
Kuzgun

Möglicherweise versuchen Sie, auf ein Steuerelement innerhalb eines Steuerelements zuzugreifen, möglicherweise eine GridView oder DetailsView.

Versuchen Sie es mit etwas wie diesem:

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