我有一个标题为hdn_ven_id的隐藏字段,当选择网格中的行时,该字段会填充主键值(整数)。
protected void rg_vendors_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (GridDataItem item in rg_vendors.SelectedItems)
{
hdn_ven_id.Value = item["venId"].Text;
}
}
然后我使用hdn_ven_id中的值在SqlCommand中填充@venIdFk。
protected void newDocUpldBtn_Click(object sender, EventArgs e)
{ ...
new_doc_cmd.Parameters.AddWithValue("@venIdFk", hdn_ven_id.Value);
...}
我收到以下错误:
将nvarchar值'81''转换为数据类型int。
时转换失败
81是正确的主键值,因此我知道隐藏字段正在捕获正确的值。
我已经回顾了几个这样的线程(Convert HiddenField to Integer),关于如何将hiddenfield的值从nvarchar转换为整数。但是,我无法获取隐藏字段的值进入数据库。如果我添加
int venidfk = int.Parse(hdn_ven_id.Value);
到newDocUpldBtn_Click我收到错误“输入字符串格式不正确”。
如何将hiddenfield值转换为整数?
以下是newDocUpldBtn_Click:
的全部内容protected void newDocUpldBtn_Click(object sender, EventArgs e)
{
int venidfk = int.Parse(hdn_ven_id.Value);
//Save the file to the server and set the full path
int i = 0;
FileUpload fu = docFU;
string filename = fu.FileName;
string fnnnoext = System.IO.Path.GetFileNameWithoutExtension(fu.FileName);
string fnnextonly = System.IO.Path.GetExtension(fu.FileName);
if (fu.HasFile)
{
while (System.IO.File.Exists(Server.MapPath("~/Data/") + filename))
{
i++;
filename = (fnnnoext + "(" + i.ToString() + ")" + fnnextonly);
}
fu.PostedFile.SaveAs(Server.MapPath("~/Data/") + filename);
hdn_doc_path.Value = (Server.MapPath("~/Data/") + filename);
hdn_doc_path_no_ext.Value = (fnnnoext + "(" + i.ToString() + ")" + fnnextonly);
SqlConnection drap_cnxn = new SqlConnection("Data Source=WDBSVCPRD01\\SVCDB;Initial Catalog=drap;Integrated Security=True");
{
SqlCommand new_doc_cmd = new SqlCommand("Insert Into docs(docTitle, docType, docContractType, docOrg, docDept, docDesc, PriorContCd, LegCompContId, docUpldDt, docPath, docStat, venIdFk) Values(LTRIM(RTRIM(@docTitle)), LTRIM(RTRIM(@docType)), LTRIM(RTRIM(@docContractType)), LTRIM(RTRIM(@docOrg)), LTRIM(RTRIM(@docDept)), LTRIM(RTRIM(@docDesc)), LTRIM(RTRIM(@PriorContCd)), LTRIM(RTRIM(@LegCompContId)), LTRIM(RTRIM(@docUpldDt)), LTRIM(RTRIM(@docPath)), LTRIM(RTRIM(@docStat)), LTRIM(RTRIM(@venIdFk)))", drap_cnxn);
new_doc_cmd.Parameters.AddWithValue("@docTitle", docTitleTextBox.Text);
new_doc_cmd.Parameters.AddWithValue("@docType", docTypeDdl.SelectedValue);
new_doc_cmd.Parameters.AddWithValue("@docContractType", docContractTypeDdl.SelectedValue);
new_doc_cmd.Parameters.AddWithValue("@docOrg", docOrgDdl.SelectedValue);
new_doc_cmd.Parameters.AddWithValue("@docDept", docDeptDdl.SelectedValue);
new_doc_cmd.Parameters.AddWithValue("@docDesc", docDescTextBox.Text);
new_doc_cmd.Parameters.AddWithValue("@PriorContCd", priorContCdTextBox.Text);
new_doc_cmd.Parameters.AddWithValue("@LegCompContId", legCompContIdTextBox.Text);
new_doc_cmd.Parameters.AddWithValue("@docUpldDt", DateTime.Now.ToString());
new_doc_cmd.Parameters.AddWithValue("@docPath", hdn_doc_path.Value);
new_doc_cmd.Parameters.AddWithValue("@docStat", "4");
new_doc_cmd.Parameters.AddWithValue("@venIdFk", venidfk);
drap_cnxn.Open();
new_doc_cmd.ExecuteNonQuery();
drap_cnxn.Close();
if (IsPostBack)
{
ven_doc_det_upld_status_lbl.Text = "Your document was successfully uploaded.";
docTitleTextBox.Text = "";
docTypeDdl.Text = "";
docContractTypeDdl.SelectedValue = "";
docOrgDdl.Text = "";
docDeptDdl.Text = "";
docDescTextBox.Text = "";
priorContCdTextBox.Text = "";
legCompContIdTextBox.Text = "";
hdn_doc_path.Value = "";
rg_vendors.DataBind();
fv_ven_docs.DataBind();
}
else
{
ven_doc_upld_fail_lbl.Text = "Your document failed to upload. Please contact Compliance for assistance.";
}
}
}
}
答案 0 :(得分:1)
看起来您的隐藏字段包含逗号。要么弄清楚它来自哪里并将其删除,要么使用
new_doc_cmd.Parameters.AddWithValue("@venIdFk", hdn_ven_id.Value.Replace(",",""));