新手,麻烦帮我看看,我的错在哪里呢,该如何修改呢??
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Globalization;
using System.Threading;
public partial class iqc_contents_mw : MisStock.publics
{
    private int inQty = 0;
    private MsIqcCheck msIqcCheck = new MsIqcCheck();    protected void Page_Load(object sender, EventArgs e)
    {        if (!IsPostBack)
        {
            ViewState["SortOrder"] = "Hd03";
            ViewState["OrderDire"] = "ASC";        }
    }    private void GetTreeNodes() 
    {
        tvbom.Nodes.Clear();
        System.Data.SqlClient.SqlDataReader Drbom;
        Drbom = msIqcCheck.Pr_Getbomkc(TextBox2.Text);
        while (Drbom.Read())
        {
            TreeNode pnode = new TreeNode();
            pnode.Text = Drbom["Expr1"].ToString();
            pnode.Value = Drbom["de01"].ToString();
            tvbom.Nodes.Add(pnode);
        }
    } 
.....
----------------------------
运行后报错,如下:
並未將物件參考設定為物件的執行個體 
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 例外詳細資訊: System.NullReferenceException: 並未將物件參考設定為物件的執行個體原始程式錯誤: 
行 35:         System.Data.SqlClient.SqlDataReader Drbom;
行 36:         Drbom = msIqcCheck.Pr_Getbomkc(this.TextBox2.Text);
行 37:         while (Drbom.Read())
行 38:         {
行 39:             TreeNode pnode = new TreeNode();
 原始程式檔: d:\webmaster\MisStock\iqc\contents_mw.aspx.cs    行: 37 

解决方案 »

  1.   

     private void GetTreeNodes()  
      {
      tvbom.Nodes.Clear();
      System.Data.SqlClient.SqlDataReader Drbom;
      Drbom = msIqcCheck.Pr_Getbomkc(TextBox2.Text);  while (Drbom!=null && Drbom.Read())//this error
      {
      TreeNode pnode = new TreeNode();
      pnode.Text = Drbom["Expr1"].ToString();
      pnode.Value = Drbom["de01"].ToString();
      tvbom.Nodes.Add(pnode);
      }
      } 
      

  2.   

    楼主。你这条msIqcCheck.Pr_Getbomkc(TextBox2.Text);语句返回的可能是null所以。你在 (Drbom为null)
    while (Drbom.Read())
    这里面就报未将引用设置为对象实例的错误。
      

  3.   

    我在后台调试Pr_Getbomkc存储过程明明有资料啊,怎前台不显示数据呢,错在哪里呢??
      

  4.   

    首先确定TextBox2.Text的值是否与你后台调用的一致,或者将TextBox2.Text代入到存储过程执行,如果有数据,那么请断点调试msIqcCheck.Pr_Getbomkc具体的方法,有可能是参数传入错误,也有可能是数据库,总而言之,如果存储过程没问题,请调试程序,谢谢。
      

  5.   

    存儲過程如下,我在後台調試有數據,我直接把msIqcCheck.Pr_Getbomkc(TextBox2.Text.ToString())替換成Drbom = msIqcCheck.Pr_Getbomkc("OPT392-40769")依舊沒有數據,怎回事情呢?
    /// <summary>
        /// 根據編號得到BOM情況及對應物料的庫存狀況
        /// </summary>
        public SqlDataReader Pr_Getbomkc(string de01)
        {
            return GetDataReader("EXEC Getbomkc @de01={de01}".Replace("{de01}", de01));
        }
      

  6.   

    调用存储过程的方法有问题,请跟踪GetDataReader此方法,调试进去,
      

  7.   

    我仔细查看了GetDataReader也没发现什么问题啊,就是没见数据呢?
    public class Datasource
    {
    public SqlDataReader GetDataReader(string CmdText)
    {
    try
    {
    SqlConnection Connection = new SqlConnection(new Config().GetConfigValue("ConnectionString"));
    Connection.Open(); return new SqlCommand(CmdText,Connection).ExecuteReader(CommandBehavior.CloseConnection);
    }
    catch(Exception)
    {
                    return null;
    }
    }
      

  8.   

            SqlCommand cmd = new SqlCommand(CmdText, Connection);
            cmd.CommandType = CommandType.StoredProcedure;//this 
            return new cmd.ExecuteReader(CommandBehavior.CloseConnection);
      

  9.   

     SqlCommand cmd = new SqlCommand(CmdText, Connection);
            cmd.CommandType = CommandType.StoredProcedure;//this 
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
      

  10.   

    问题没有实质上解决,但还是先给分,希望还能在线解决,谢谢!
    后台调试存储过程有资料的,但前台运行却不显示资料,代码我检查了却没发现什么问题,麻烦帮我看看。
    ----------------------------------------
        private void GetTreeNodes() 
        {
            //tvbom.Nodes.Clear();
            System.Data.SqlClient.SqlDataReader Drbom;
            Drbom = instorage.Pr_Getbomkc(TextBox2.Text.ToString());
            Paneltreeview.Visible = true;
            tvbom.Visible = true;
            while (Drbom != null && Drbom.Read())
            {
                TreeNode pnode = new TreeNode();
                pnode.Text = Drbom["Expr1"].ToString();
                pnode.Value = Drbom["de01"].ToString();
                tvbom.Nodes.Add(pnode);
            }
        }
    ----------------------------------------------------------------------
    存储过程 
    public SqlDataReader Pr_Getbomkc(string de01)
        {
            return GetDataReader("EXEC Getbomkc @de01={de01}".Replace("{de01}", de01));
        }
    这是调用的代码,没修改过:
     public SqlDataReader GetDataReader(string CmdText)
      {
       try
       {
        SqlConnection Connection = new SqlConnection(new Config().GetConfigValue("ConnectionString"));
        Connection.Open();
                    SqlCommand cmd = new SqlCommand(CmdText, Connection);
                    cmd.CommandType = CommandType.StoredProcedure;
        return new SqlCommand(CmdText,Connection).ExecuteReader(CommandBehavior.CloseConnection);
       }
       catch(Exception)
       {    
                    return null;
       }
      }
      

  11.   

            string de01 = "";//        SqlConnection Connection = new SqlConnection(new Config().GetConfigValue("ConnectionString"));
            Connection.Open();
            SqlCommand cmd = new SqlCommand("Getbomkc", Connection);
            cmd.Parameters.Add("@de01", SqlDbType.VarChar, 50);
            cmd.Parameters[0].Value = de01;
            cmd.CommandType = CommandType.StoredProcedure;        return cmd.ExecuteReader(CommandBehavior.CloseConnection);
      

  12.   

     SqlCommand cmd = new SqlCommand(CmdText, Connection);
      cmd.CommandType = CommandType.StoredProcedure;
      return cmd.ExecuteReader(CommandBehavior.CloseConnection);
      

  13.   

    ztxneter,我把你这段程序替换到我代码里,怎依旧没有数据显示呢?麻烦你指导下,谢谢!
        public SqlDataReader Pr_Getbomkc(string de01)
        {
            return GetDataReader1("EXEC Getbomkc @de01={de01}".Replace("{de01}", de01));
        }
            
    public SqlDataReader GetDataReader1(string CmdText)
            {
                string de01 = "";//
                SqlConnection Connection = new SqlConnection(new Config().GetConfigValue("ConnectionString"));
                Connection.Open();
                SqlCommand cmd = new SqlCommand("Getbomkc", Connection);
                cmd.Parameters.Add("@de01", SqlDbType.VarChar, 50);
                cmd.Parameters[0].Value = de01;
                cmd.CommandType = CommandType.StoredProcedure;            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
      

  14.   

    我晕死你
    public SqlDataReader GetDataReader1(string CmdText)
      {
      string de01 = CmdText;//试试看
      SqlConnection Connection = new SqlConnection(new Config().GetConfigValue("ConnectionString"));
      Connection.Open();
      SqlCommand cmd = new SqlCommand("Getbomkc", Connection);
      cmd.Parameters.Add("@de01", SqlDbType.VarChar, 50);
      cmd.Parameters[0].Value = de01;
      cmd.CommandType = CommandType.StoredProcedure;  return cmd.ExecuteReader(CommandBehavior.CloseConnection);
      }  public SqlDataReader Pr_Getbomkc(string de01)
      {
      return GetDataReader1(de01);
      }
      

  15.   

    谢谢ztxneter,呵呵数据出来了!
      

  16.   

    Ztxneter,为什么我的treeview目前只显示一层能,我怎把他建立多层的树状资料呢,父项好像没显示出来,全是最后一层的资料。    private void GetTreeNodes() 
        {
            tvbom.Nodes.Clear();
            System.Data.SqlClient.SqlDataReader Drbom;
            Drbom = instorage.Pr_Getbomkc(TextBox2.Text.ToString());
            Paneltreeview.Visible = true;
            tvbom.Visible = true;        while (Drbom != null && Drbom.Read())
            {
                TreeNode pnode = new TreeNode();
                pnode.SelectAction = TreeNodeSelectAction.None;            pnode.Text = Drbom["de02"].ToString() + " -- " + Drbom["Expr2"].ToString();
                pnode.Value = Drbom["de01"].ToString();
                tvbom.Nodes.Add(pnode);
            }
        } 
      

  17.   

    这你得去找找treeview 递归绑定数据的相关资料了
      

  18.   

    这个问题有点头疼,我是新手,有点不会,只知道定义:从数据库中找出父节点,然后再遍历父节点的foreach中遍历子节点,添加到树中;
      
    存储过程Getbomkc得到资料
    de01   Expr1        de02      Expr2      kcnamber
    1      产品事业部    1.01      广州产品处    20
    1.01   广州产品处    1.01.01   开发组       8
    1.02   上海产品处    1.02.01   开发组       6
    1.01.01 开发组      1.01.01.01   张三     2

    正确的树状:
    1.产品事业部
      1.01  广州产品处
       1.01.01  开发组
        1.01.01.01  张三
      1.02  上海产品处
        
    可我的却只显示Expr2下所有的资料
    1.01      广州产品处
    1.01.01   开发组
    1.02.01   开发组
    1.01.01.01   张三
    ...