2012-12-28 171 views
0

我想用objectdatasource命中sql服务器并返回一个数据表来填充我的详细信息视图控件。所选的ID值由gridview控件返回。好像这个数据表没有被适配器填充,我不知道为什么。 sql中的ID被设置为主键(Int,4,非空)。调试器说Detail数据表为null。任何帮助深表感谢。在ASP.NET中的详细信息视图

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; 
        } 
       } 
      } 
+0

尝试'adapter.Fill(dataset);'并定义数据集 –

回答

0

感谢所有。

问题是我没有初始化我的数据表到一个新的实例。

DataTable Detail = null; ===> DataTable Detail = new Datatable();

并且转换应该在sql中完成,而不是在代码中完成。

cmd.Parameters.Add(“ID”,System.Data.SqlDbType.Int,4).Value = ID;

string comm = @“select * from dbo.Products where ID = convert(int,@ ID)”;

0

我想你错过了命令类型

cmd.CommandType = CommandType.Text; 
+0

我做了。适配器=新的SqlDataAdapter(CMD)做到了,对吗? – John

+0

对不起约翰更新我的答案检查是否可以帮助 – Adil

0

试试这个

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]; 
    } 
相关问题