登録用のASP.NETウィザードがあります。ステップ1では、テーブルdbo.Empに入るコントロールがいくつかあります。このステップ1では、dbo.Emptypeと呼ばれる別のテーブルのコードビハインドからバインドされたDropDownListがいくつかあります。
ただし、フォームをテーブルdbo.Empに挿入しているときに、次のエラーが発生します-
Insert Error:Error converting data type nvarchar to numeric.
どのコントロールにそれが指示されているのかわかりません。
しかし、ここに声明があります-
cmd.Parameters.AddWithValue("@EmpType",DropDownList1.SelectedIndex);
cmd.Parameters.AddWithValue("@DeptID", DropDownList3.SelectedIndex);
EmpTypeのアイテムに関連付けられているINT値をテーブルに挿入したいと思います。DropDownList1はDbo.EmpType(TypeID(PK- AutoIncrement)| Type)というテーブルにバインドされているため、ユーザーがそのコントロールをドロップダウンして値を選択する場合、テーブルに挿入するにはDataValueField(つまりTypeID)が必要です。
私は何をしますか?
これは私のバインドクラスです。
public void dropdowntype()
{
SqlConnection myConn = new SqlConnection(@"Data Source=USER-PC\SQLEXPRESS;Initial Catalog=KKSTech;Integrated Security=True");
SqlCommand myCmd = new SqlCommand(
"SELECT Type, TypeID FROM EmpType", myConn);
myConn.Open();
SqlDataReader myReader3 = myCmd.ExecuteReader();
//Set up the data binding.
Emp_type.DataSource = myReader3;
Emp_type.DataTextField = "Type";
Emp_type.DataValueField = "TypeID";
Emp_type.DataBind();
//Close the connection.
myConn.Close();
myReader3.Close();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!(Page.IsPostBack))
{
dropdownDept();
dropdowntype();
dropdownskills();
}
}