我的数据表是gx表,里面就两列数据,fth(父图号)和zth(子图号),例如
fth zth
中国 浙江
中国 湖北
浙江 杭州
浙江 宁波
杭州 余杭
杭州 萧山
······ web程序中有个textbox1和treeview1,在textbox1中输入父图号值,点button,treeview中就会显示相应内容。例如在textbox1中输入“浙江”,treeview1就会显示“
浙江
杭州
余杭
萧山
宁波
这当然只是个例子,我照高手们的意见写完了下面的代码,但是运行的时候却看不到treeview1,请问下是怎么回事?并且
1)静态的treeview运行时是可以显示的;
2)数据库里有fth='HW69090701'的数据存在;
3)用代码添加一个节点是显示的;
但是运行时点BUTTON1却看不到任何数据,请各位大虾帮帮忙
代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
TreeView1.Nodes.Clear();
TreeView1.Visible = true;
SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnString1"]);
string sqlname = "SELECT FTH,ZTH from gx";
SqlCommand cmd = new SqlCommand(sqlname, cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "gx");
DataTable dt = ds.Tables[0]; foreach (DataRow dr in dt.Rows)
{
if (dr["FTH"].ToString() == "HW69090701")
{
TreeNode newNode = new TreeNode(dr["ZTH"].ToString());
TreeView1.Nodes.Add(newNode);
ChildLoad(dr, newNode, dt);
}
} this.TreeView1.ExpandAll();
}
protected void Page_Load(object sender, EventArgs e)
{
} private void ChildLoad(DataRow dr, TreeNode newNode, DataTable dt)
{
foreach (DataRow row in dt.Rows)
{ if (dr["ZTH"].ToString() == row["FTH"].ToString())
{
TreeNode childNode = new TreeNode();
childNode.Text = row["ZTH"].ToString();
newNode.ChildNodes.Add(childNode);
ChildLoad(row, childNode, dt); }
}
}
fth zth
中国 浙江
中国 湖北
浙江 杭州
浙江 宁波
杭州 余杭
杭州 萧山
······ web程序中有个textbox1和treeview1,在textbox1中输入父图号值,点button,treeview中就会显示相应内容。例如在textbox1中输入“浙江”,treeview1就会显示“
浙江
杭州
余杭
萧山
宁波
这当然只是个例子,我照高手们的意见写完了下面的代码,但是运行的时候却看不到treeview1,请问下是怎么回事?并且
1)静态的treeview运行时是可以显示的;
2)数据库里有fth='HW69090701'的数据存在;
3)用代码添加一个节点是显示的;
但是运行时点BUTTON1却看不到任何数据,请各位大虾帮帮忙
代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
TreeView1.Nodes.Clear();
TreeView1.Visible = true;
SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnString1"]);
string sqlname = "SELECT FTH,ZTH from gx";
SqlCommand cmd = new SqlCommand(sqlname, cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "gx");
DataTable dt = ds.Tables[0]; foreach (DataRow dr in dt.Rows)
{
if (dr["FTH"].ToString() == "HW69090701")
{
TreeNode newNode = new TreeNode(dr["ZTH"].ToString());
TreeView1.Nodes.Add(newNode);
ChildLoad(dr, newNode, dt);
}
} this.TreeView1.ExpandAll();
}
protected void Page_Load(object sender, EventArgs e)
{
} private void ChildLoad(DataRow dr, TreeNode newNode, DataTable dt)
{
foreach (DataRow row in dt.Rows)
{ if (dr["ZTH"].ToString() == row["FTH"].ToString())
{
TreeNode childNode = new TreeNode();
childNode.Text = row["ZTH"].ToString();
newNode.ChildNodes.Add(childNode);
ChildLoad(row, childNode, dt); }
}
}
private void ChildLoad(string p_FTH, TreeNode newNode, DataTable dt)
{
foreach (DataRow row in dt.Rows)
{ if (p_FTH.ToUpper() == row["FTH"].ToString().ToUpper())
{
TreeNode childNode = new TreeNode();
childNode.Text = row["ZTH"].ToString();
newNode.ChildNodes.Add(childNode);
ChildLoad(row["ZTH"].ToString(), childNode, dt);
}
}
} 上面一段语名:
foreach (DataRow dr in dt.Rows)
{
if (dr["FTH"].ToString().ToUpper() == "HW69090701".ToUpper())
{
TreeNode newNode = new TreeNode(dr["FTH"].ToString());
TreeView1.Nodes.Add(newNode);
ChildLoad(dr["ZTH"].ToString(), newNode, dt);
}
}
编译器错误消息: CS1502: 与“cpthscjgs.ChildLoad(System.Data.DataRow, System.Web.UI.WebControls.TreeNode, System.Data.DataTable)”最匹配的重载方法具有一些无效参数
{
if (dr["FTH"].ToString() == "HW69090701")
{
TreeNode newNode = new TreeNode(dr["ZTH"].ToString());
TreeView1.Nodes.Add(newNode);
//ChildLoad(dr, newNode, dt);把這句注釋掉,先不要遞歸,看有沒有第一層父節點綁定
}
}
在上面加載父節點時,那句也得修改一下,然後調用時,我改了一下參數類型。