これは私を狂ってしまいます。オブジェクト型System.Web.UI.WebControls.ListItemから既知の管理対象プロバイダのネイティブ型へのマッピングがありません
のマッピングが知られている管理プロバイダのネイティブ型にオブジェクト型System.Web.UI.WebControls.ListItemから存在していない
私はへの挿入を介してデータベースにリストボックスからデータを渡すためにしようとすると、私はこのエラーが発生します。リストボックスのデータもデータベースから抽出されます。 インサートは、次のようになります。
cmd.Parameters.AddWithValue("@driver",DriversJourney.SelectedItem.ToString());
私はselectedIndexの、SelectedValueの、()、selectedValue.ToString())のSelectedItemでそれを試してみました。
cmd.Parameters.AddWithValue("@origin", JourOrigin.SelectedItem);
cmd.Parameters.AddWithValue("@destination", JourDestination.SelectedItem);
cmd.Parameters.AddWithValue("@time", date.SelectedItem);
彼らは正しい型にキャストまたはSelectedValue
を使用してください:コードの
public partial class FindDriver : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\RideShare.mdf;Integrated Security=True");//set connection as a variable
SqlCommand cmd = new SqlCommand();
SqlDataReader dr;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] == null)
{
Response.Redirect("~/Account/FindDriver.aspx");
}
else
{
labelWelcome.Text = "Welcome " + Session["UserName"] + "!".ToString();
}
}
protected void search(object sender, EventArgs e)
{
con.Open();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM Driver WHERE City = '" + JourOrigin.SelectedItem + "' ";
dr = cmd.ExecuteReader();
dr.Read();
if (dr.HasRows)
{
Session["city"] = JourOrigin.SelectedItem.ToString();
Response.Redirect("~/Account/FindDriver.aspx");
NoCity.Visible = false;
}
else
{
DriversJourney.Items.Clear();
DriversJourney.Items.Add("No Drivers in selected city, try another city");
NoCity.Visible = true;
NoCity.Text = "No drivers in selected city, please try another city";
}
con.Close();
}
protected void JourneyAdd_Click(object sender, EventArgs e)
{
using(SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\RideShare.mdf;Integrated Security=True"))
{
SqlCommand cmd = new SqlCommand("INSERT INTO Journey(JourneyOrigin, JourneyDestination, Date, Time, PassengerUserName, DriverUserName) VALUES (@origin, @destination, @date, @time, @driver, @passenger)");
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@origin", JourOrigin.SelectedItem);
cmd.Parameters.AddWithValue("@destination", JourDestination.SelectedItem);
cmd.Parameters.AddWithValue("@date", Calendar.SelectedDate);
cmd.Parameters.AddWithValue("@time", date.SelectedItem);
cmd.Parameters.AddWithValue("@driver", DriversJourney.SelectedValue);
cmd.Parameters.AddWithValue("@passenger", Session["username"].ToString());
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
}
}
あなたの例外は、あなたが指定したコードと一致しません。呼び出しスタック全体をインクルードします。 – Zer0
'SelectedItem'は項目なので動作しません。 'DriversJourney.SelectedValue'を使用したとき、どのようなエラーが発生しましたか? @ Zer0:この投稿のタイトルのエラーはあなたが[ListItemをパラメータとして渡そうとした場合]例外です(http://stackoverflow.com/questions/7095689/no-mapping-exists-from -object-type-system-web-ui-webcontrols-listitem-to-a known)を使用します。 – Santi
@サンティ何?彼は 'ToString()'をやっている。そこで、彼は 'SelectedItem'ではなく文字列を渡しています。あなたが何を意味するかわからない。しかし、私は例外が何を述べているのか、それが私が混乱している理由であることに同意します。言い換えれば、コードは正常に動作するはずです。そして、私はそれが例外の原因だとは思わない。 – Zer0