0
在我的asp项目中,我需要使用TVP将列表框中的所有项目列表写入数据库表格。我有列表框,存储过程(通过TVP - 表值参数)。主要问题是传递DataTable是NULL,但Session不是。我会把你的代码格式aspx.cs文件发给你(只有一个区块,如果你需要更多,请告诉我)。如何将会话传递给DataTable?
protected void ASPxButton1_Click(object sender, EventArgs e)
{
//DataTable dts = Session["SelectedOptions"] as DataTable;
DataTable _dt;
//_dt = new DataTable("Items");
_dt = Session["SelectedOptions"] as DataTable;
_dt.Columns.Add("Id", typeof(int));
_dt.Columns.Add("Name", typeof(string));
foreach (ListEditItem item in lbSelectedOptions.Items)
{
DataRow dr = _dt.NewRow();
dr["Id"] = item.Value;
dr["Name"] = item.Text;
}
SqlConnection con;
string conStr = ConfigurationManager.ConnectionStrings["TestConnectionString2"].ConnectionString;
con = new SqlConnection(conStr);
con.Open();
using (con)
{
SqlCommand sqlCmd = new SqlCommand("TestTVP", con);
sqlCmd.CommandType = CommandType.StoredProcedure;
SqlParameter tvpParam = sqlCmd.Parameters.AddWithValue("@testtvp", _dt);
tvpParam.SqlDbType = SqlDbType.Structured;
sqlCmd.ExecuteNonQuery();
}
con.Close();
}
编辑
Thans为您的解决方案,但我的主要问题仍然出现。在Session.Add(“SelectedOptions”,_dt); - _dt为NULL。可能是什么原因?在我之前发布的代码中,情况是一样的。会话不为空,它充满了选定的项目,但DataTable为空。我想这是不适合sesiion数据表.... – Marianna
你有没有实现我的第二位代码?仅仅因为你的Session不为空并不意味着'Session [“SelectionOptions”]'也不为空。在我的代码中,当你进入Session.Add(“SelectedOptions”,_dt)时,_dt不可能是null! – GarethD
是的,我实现了代码的第二位,通过调试,_dt为空。但会话[“SelectionOptions”] - 不是 – Marianna