ASP.NET中的Detailsview
我试图用objectdatasource访问sql server并返回一个datatable以填充我的details视图控件。所选ID值由gridview控件返回。看起来数据表不是由适配器填充的,我不知道为什么。sql中的ID设置为主键(Int,4,非null)。调试器说细节数据表为空。非常感谢您的帮助ASP.NET中的Detailsview,asp.net,gridview,ado.net,detailsview,Asp.net,Gridview,Ado.net,Detailsview,我试图用objectdatasource访问sql server并返回一个datatable以填充我的details视图控件。所选ID值由gridview控件返回。看起来数据表不是由适配器填充的,我不知道为什么。sql中的ID设置为主键(Int,4,非null)。调试器说细节数据表为空。非常感谢您的帮助 public DataTable GetDetail(string ID) { if (ID == "") {
public DataTable GetDetail(string ID)
{
if (ID == "")
{
return null;
}
else
{
DataTable Detail = null;
using (SqlConnection conn = new SqlConnection(connection))
{
string comm = @"select * from dbo.Products where ID = @ID";
conn.Open();
SqlDataAdapter adapter=null;
using (SqlCommand cmd = new SqlCommand(comm, conn))
{
cmd.Parameters.Add("ID", System.Data.SqlDbType.Int, 4).Value = Convert.ToInt32(ID);
adapter = new SqlDataAdapter(cmd);
adapter.Fill(Detail);
return Detail;
}
}
}
我想你错过了命令类型
cmd.CommandType = CommandType.Text;
试试这个
DataSet ds = new DataSet();
using (SqlConnection con = new SqlConnection(connection))
{
string myquery="select * from dbo.Products where ID = @ID";
SqlCommand cmd = new SqlCommand(myquery, con);
SqlDataAdapter dap = new SqlDataAdapter();
dap.SelectCommand = cmd;
cmd.Parameters.Add("@ID", SqlDbType.NVarChar, 15).Value = ID;
dap.Fill(ds);
return ds.Tables[0];
}
谢谢大家
问题是我没有将datatable初始化为新实例
DataTable详细信息=null;==>DataTable Detail=新DataTable()
而且转换应该在sql中完成,而不是在代码中
cmd.Parameters.Add(“ID”,System.Data.SqlDbType.Int,4).Value=ID
string comm=@“select*from dbo.Products,其中ID=convert(int,@ID)” 抱歉,John更新了我的答案,检查这是否有助于尝试
adapter.Fill(数据集)编码>并定义数据集