新手,麻烦帮我看看,我的错在哪里呢,该如何修改呢??
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
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
{
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);
}
}
while (Drbom.Read())
这里面就报未将引用设置为对象实例的错误。
/// <summary>
/// 根據編號得到BOM情況及對應物料的庫存狀況
/// </summary>
public SqlDataReader Pr_Getbomkc(string de01)
{
return GetDataReader("EXEC Getbomkc @de01={de01}".Replace("{de01}", de01));
}
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;
}
}
cmd.CommandType = CommandType.StoredProcedure;//this
return new cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.CommandType = CommandType.StoredProcedure;//this
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
后台调试存储过程有资料的,但前台运行却不显示资料,代码我检查了却没发现什么问题,麻烦帮我看看。
----------------------------------------
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;
}
}
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);
cmd.CommandType = CommandType.StoredProcedure;
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
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);
}
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);
}
{
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);
}
}
存储过程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 张三
...