62,046
社区成员
发帖
与我相关
我的任务
分享
// 取得 此产品所属 三级类别的id
SqlConnection con = new SqlConnection(_connstring);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from pro_category_record where proid=@proid";
cmd.Parameters.AddWithValue("@proid", id);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet dst = new DataSet();
using (sda)
{
sda.Fill(dst);
}
// 遍历,取得值,然后去查找对应的节点值,如果相等,则表明 这个产品属于这个分类,则把这个分类 checkbox 选中
foreach (DataRow dr in dst.Tables[0].Rows)
{
string categoryid = dr["categoryid"].ToString();
foreach (TreeNode tn in TreeView1.Nodes)
{
if (dr["categoryid"].ToString() == tn.Value)
{
tn.Selected = true;
}
}
}
// 但是这样做不正确,无效,请问 应该怎么写呢?
foreach (DataRow dr in dst.Tables[0].Rows)
{
string categoryid = dr["categoryid"].ToString();
foreach (TreeNode tn in TreeView1.Nodes)
{
if (dr["categoryid"].ToString() == tn.Value)
{
tn.Selected = true;
}
}
}
这个是不能这样写的,需要你自己琢磨一个递归,TreeView只能通过递归去实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
using System.Data;
using System.Data.SqlClient;
public partial class newadmin_test4 : System.Web.UI.Page
{
private string _connstring = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
get_lv1_data();
}
}
protected void get_lv1_data()
{
SqlConnection con = new SqlConnection(_connstring);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from pro_category where pid=@pid order by shunxu";
cmd.Parameters.AddWithValue("@pid", 0);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet dst = new DataSet();
using (sda)
{
sda.Fill(dst);
}
lv1.DataSource = dst;
lv1.DataBind();
}
public DataSet lv2data(object lv1id)
{
SqlConnection con = new SqlConnection(_connstring);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from pro_category where pid=@pid order by shunxu";
cmd.Parameters.AddWithValue("@pid", lv1id);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet dst = new DataSet();
using (con)
{
con.Open();
sda.Fill(dst);
}
return dst;
}
public DataSet lv3data(object lv2id)
{
SqlConnection con = new SqlConnection(_connstring);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from pro_category where pid=@pid order by shunxu";
cmd.Parameters.AddWithValue("@pid", lv2id);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet dst = new DataSet();
using (con)
{
con.Open();
sda.Fill(dst);
}
return dst;
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test4.aspx.cs" Inherits="newadmin_test4" %>
<html lang="en">
<head>
<meta charset="utf-8">
<title>sf</title>
</head>
<body>
<form id="form1" runat="server">
<ul>
<asp:Repeater ID="lv1" runat="server">
<ItemTemplate>
<li>
<div class="div_lv1"><span class="label_lv1"><%#Eval("categoryname") %>(<%#Eval("shunxu") %>)</span><br class="clear" /></div>
<ul class="ul_lv2">
<asp:Repeater ID="lv2" runat="server" DataSource='<%# lv2data(Eval("id")) %>'>
<ItemTemplate>
<li>
<div class="div_lv2"><span class="label_lv2"><%#Eval("categoryname") %>(<%#Eval("shunxu") %>)</span><br class="clear" />
<ul class="ul_lv3">
<asp:Repeater ID="lv3" runat="server" DataSource='<%# lv3data(Eval("id")) %>' >
<ItemTemplate>
<asp:CheckBoxList ID="CheckBoxList1" runat="server" DataTextField='<%#Eval("categoryname") %>' DataValueField='<%#Eval("id") %>'> </asp:CheckBoxList>
</ItemTemplate>
</asp:Repeater>
</ul>
</div><br class="clear" />
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</li>
<br class="clear" />
</ItemTemplate>
</asp:Repeater>
</ul>
</form>
</body>
</html>