SQLテーブルからデータを取り込み、2つの列を表示するグリッドビューがあります.1つは整数データ列から、もう1つはnvarcharから取得します。グリッドビューにはチェックボックス列がありますc#文字列からintに変換できません
グリッドビューは正しく挿入され、行のサブセットが選択された後(チェックボックス列で)、選択した行を別のSQLテーブルに挿入します。しかし、SQLステートメントの変数に値を設定すると、intから始まる値に「文字列からintに変換できません」というエラーが発生します。
私は改宗を書いて、この文の解析が、まだエラーを取得しようとしている:
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));
すべてはまだ[「ID」]値にエラーが表示されます。
どのような考えですか? GridViewのに移入されているデータの
例である:
PracticeID PracticeName
1 General Surgical Pathology
2 General Pathology/Basic Science
4 Cardiovascular
6 Cytopathology-GYN
7 Cytopathology-nonGYN
フルボタンコマンドである:
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();
}
}
}
}
}
完全GridViewコントロールである:
<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" />
ホープこの今までのすべてのコメントからの質問に答えます(いくつか?)。
:
そして、このようなSQLのパラメータを使用することをお勧めしますどの値がrow.Cells ["Id"]の値であるかを確認してください。 –
@GiladGreenの先頭と末尾の空白は、パーサによって処理されます。 – juharr
私はaffraid 'Idはこのエラーをスローする値ではありません。ターゲットデータベーステーブルに他の 'Integer'カラムがありますか? – Fabio