c#不能从字符串转换为整型
本文关键字:整型 转换 字符串 不能 | 更新日期: 2023-09-27 18:12:01
我有一个gridview,它从一个SQL表填充并显示两列,一列来自整数数据列,另一列来自nvarchar。Gridview也有一个复选框列
gridview正确填充,并且在选择行子集(通过复选框列)之后,我想将选中的行插入到另一个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" />
希望这篇文章能回答到目前为止所有评论中的一些问题。
问题是row.Cells[]
是一个数组,所以您需要像这样使用它:
row.Cells[3].Text
最好使用如下的sql参数:
cmd.Parameters.Add("@PracticeArea", SqlDbType.Int).Value = Convert.ToInt32(row.Cells[index].Text;