455443 - 2007-4-9 9:47:00
SQL 数据库后缀MSF,代码:
数据表:
CREATE TABLE CateTable (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[CateName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[RootID] [int] NOT NULL ,
[ParentID] [int] NOT NULL
)
GO
存储过程:
CREATE PROCEDURE CateTable_GetList AS
BEGIN
Select
CateID,
CateName,
RootID,
ParentID
From
CateTable
Order By
CateID,RootID,ParentID
END
代码:
private void MainForm_Load(object sender, EventArgs e)
{
//从数据库中读取数据
SqlConnection con = new SqlConnection(ConnString.ConStr);
SqlCommand cmd = new SqlCommand("CateTable_GetList", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
sda.Fill(ds);
}
catch
{
}
finally
{
cmd = null;
con.Close();
}
//往TreeView中添加树节点
//添加根节点
TreeNode tn = new TreeNode();
tn.Text = "种类";
tn.Name = "0";//Name作为ID
tn.Tag = "0";//Tag作为RootID
tn.ImageIndex = 0;
tn.SelectedImageIndex = 0;
tv.Nodes.Add(tn);//该TreeView命名为tv
tv.SelectedNode = tv.TopNode;
//把其他节点加上去
if (ds != null)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
tn = new TreeNode();
tn.Text = dr["CateName"].ToString();
tn.Name = dr["CateID"].ToString();//Name作为CateID
tn.Tag = dr["RootID"].ToString();//Tag作为RootID
tn.ImageIndex = 1;
tn.SelectedImageIndex = 1;
//判断是否为主节点
if (dr["CateID"].ToString() == dr["RootID"].ToString())
{
//主节点
tv.SelectedNode = tv.TopNode;
}
else
{
//其他节点
if (tv.SelectedNode.Name != dr["ParentID"].ToString())
{
TreeNode[] tn_temp = tv.Nodes.Find(dr["ParentID"].ToString(), true);
if (tn_temp.Length > 0)
{
tv.SelectedNode = tn_temp[0];
}
}
}
tv.SelectedNode.Nodes.Add(tn);
}
tv.ExpandAll();//展开TreeView
tv.SelectedNode = tv.TopNode;
}
}
foreach (DataRow dr in ds.Tables[0].Rows)这里出错
提示:确保列表中的最大索引小于列表的大小
未处理 System.IndexOutOfRangeException
Message="无法找到表 0。"
Source="System.Data"
StackTrace:
在 System.Data.DataTableCollection.get_Item(Int32 index)
在 w.MainForm.MainForm_Load(Object sender, EventArgs e) 位置 D:\1\w\MainForm.cs:行号 52
在 System.Windows.Forms.Form.OnLoad(EventArgs e)
在 System.Windows.Forms.Form.OnCreateControl()
在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
在 System.Windows.Forms.Control.CreateControl()
在 System.Windows.Forms.Control.WmShowWindow(Message& m)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
在 System.Windows.Forms.ContainerControl.WndProc(Message& m)
在 System.Windows.Forms.Form.WmShowWindow(Message& m)
在 System.Windows.Forms.Form.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
在 System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow)
在 System.Windows.Forms.Control.SetVisibleCore(Boolean value)
在 System.Windows.Forms.Form.SetVisibleCore(Boolean value)
在 System.Windows.Forms.Control.set_Visible(Boolean value)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.Run(Form mainForm)
在 w.Program.Main() 位置 D:\1\w\Program.cs:行号 17
在 System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()
达人帮帮:( :(
秀真 - 2007-4-9 19:54:00
是不是异常没捕获?.NET黄页看得头晕,还是JAVA好;P
455443 - 2007-4-10 10:04:00
8知道,谁能帮帮
jxw2008 - 2007-4-10 17:52:00