Ich habe eine Gridview, die aus einer SQL-Tabelle auffüllt und zwei Spalten zeigt, eine kommt aus einer Ganzzahl-Datenspalte, die andere aus einer Nvarchar. Gridview hat auch eine Checkbox-SpalteC# Kann nicht von String in int konvertieren
Die Gridview wird korrekt ausgefüllt, und nachdem eine Teilmenge von Zeilen ausgewählt ist (über Checkbox-Spalte) möchte ich die ausgewählten Zeilen in eine andere SQL-Tabelle einfügen. Beim Auffüllen der Variablen für die SQL-Anweisung bekomme ich jedoch den Fehler "Kann nicht von String in int konvertieren" für den Wert, der von einem int gefüllt wird, um damit zu beginnen.
Ich habe versucht, zu konvertieren zu schreiben und für diese Aussage analysieren, aber immer noch den Fehler bekommen:
cmd.Parameters.AddWithValue("@PracticeArea", int.Parse(row.Cells["Id"].Value));
cmd.Parameters.AddWithValue("@PracticeArea", Convert.ToInt32(row.Cells["Id"].Value));
cmd.Parameters.AddWithValue("@PracticeArea", Convert.ToInt32(row.Cells["Id"].Text));
Alle zeigen noch den Fehler auf dem [ „id“] Wert.
Irgendwelche Gedanken?
Beispiel der Daten, die mit dem Grid bevölkert wird, ist:
PracticeID PracticeName
1 General Surgical Pathology
2 General Pathology/Basic Science
4 Cardiovascular
6 Cytopathology-GYN
7 Cytopathology-nonGYN
Voll Schaltfläche Befehl lautet:
protected void Bulk_Insert(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
if ((row.FindControl("CheckBox1") as CheckBox).Checked)
{
string connectionString = WebConfigurationManager.ConnectionStrings["CS1"].ConnectionString;
SqlConnection con = new SqlConnection(connectionString);
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO ReviewerPractice VALUES(@Reviewer, @PracticeArea)", con))
{
cmd.Parameters.AddWithValue("@Reviewer", ReviewerName.Text);
cmd.Parameters.AddWithValue("@PracticeArea", Convert.ToInt32(row.Cells["Id"].Value));
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
}
}
Vollgridview-Steuerelement ist:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="30" />
<asp:BoundField DataField="PracticeName" HeaderText="PracticeName" ItemStyle-Width="150" />
</Columns>
</asp:GridView>
<br />
<asp:Button ID="Button1" Text="Add Practice Areas" OnClick="Bulk_Insert" runat="server" />
Hope this Antworten (einige?) der Fragen aus allen bisherigen Kommentaren.
Könnten Sie debug und sehen, welcher Wert für row.Cells ["Id"] ist. Wert? –
@GiladGreen führenden und nachfolgenden Leerraum wird vom Parser behandelt. – juharr
Ich habe Angst "Id" ist nicht der Wert, der diesen Fehler wirft. Haben Sie in Ihrer Zieldatenbanktabelle eine andere Integer-Spalte? – Fabio