Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET中的Detailsview_Asp.net_Gridview_Ado.net_Detailsview - Fatal编程技术网

ASP.NET中的Detailsview

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 == "") {

我试图用objectdatasource访问sql server并返回一个datatable以填充我的details视图控件。所选ID值由gridview控件返回。看起来数据表不是由适配器填充的,我不知道为什么。sql中的ID设置为主键(Int,4,非null)。调试器说细节数据表为空。非常感谢您的帮助

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(数据集)并定义数据集