关于一个左侧导航的实现,求了 这样的树图形要求每一行都可以在后台更改,要怎么弄啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Ext有更好的效果,它上面的导航是json数据你的json数据完全可以控制在页面加载是从后台获取 MVC里面有个mvchtmlstring,在后台生成HTML代码 实现方法很多的哦!1、先把类数据从数据库读取出来,比如“中式系列”、“欧式系列”,分别保存在一个变量里,如 public string m_class1='中式系列',public string m_class2='欧式系列',当然变量的值是通过sdr来读取的字段值。这样就可以放在你的前台的菜单里了,象这样绑定<%=m_class1 %>然后就可以用repeater或者DataList来绑定类里面的其他列了。2、Extjs是个不错的工具哦。3、还是JS啊,Ajax\jquery等等的工具 我是这样做的,新建一个表,专门装这个分类的表结构:ID(int),ParentID,typeName(nvarchar)...如,新插入一条数据: values('1','0','中式系列');这里面,parentID=0就说明,这个是根类别。如果在这个根类下面添加类别,就把该根类的ID传给下一级的parentID如:values('2','1','餐具系列')values('3','1','茶具系列')values('4','1','茶具系列')类推,如果新增一个根类别: values('1','0','欧式系列');……不知道,这样说,你明不明白 我感觉这些分类都是存在数据库里,然后进行分级的,比如有个parentid来记录,为0时就是第一集,为1时,就是属于id为1的数据的子项如Id name parentid1 中式系列 02 餐具 13 茶具 14 杯碟 15 欧式系列 06 叉类 5 用个treenode就可以了。在后台修改对应的节点值 ··· 在数据库里面吧第一列。第二列。第三列的属性设置好。然后读取出来 用treenode进行添加。 我用的reapter嵌套,可是子列不显示,用dridview测试下,已经取出了奉上代码:前台:<asp:Repeater ID="repleftroot" runat="server"> <ItemTemplate> <li style="background: url(images/leftbg1.jpg) no-repeat; font-weight: 600; color: #b47220;"> <div class="l_t1"> <img src="images/jh.png" /></div> <div class="l_t2"> <a href='products.aspx?id=<%#Eval("id")%>'><%#Eval("protypename")%></a></div> </li> <div class="l_xl"> <ul> <asp:Repeater ID="repleft" runat="server"> <ItemTemplate> <li> <div class="l_t3"> <img src="images/jh.jpg" /></div> <div class="l_t2"> <a href='products.aspx?id=<%#Eval("id")%>'> <%#Eval("proname")%></a></div> </li> </ItemTemplate> </asp:Repeater> </ul> </div> </ItemTemplate> </asp:Repeater>后台:数据绑定的就不写了,确认已经道出了子列的数据了写下这个,根reapter的循环事件 private void repleftroot_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater repleft = (Repeater)e.Item.FindControl("repleft"); DataRowView rowv = (DataRowView)e.Item.DataItem; string protypename = rowv["protypename"].ToString(); repleft.DataSource = pd.GetList(" protype=" + "'" + protypename + "'"); repleft.DataBind(); } }按理说,每循环一次就绑定一次子节点数据应该显示啊,可是现在不显示。 在后台写的: private void InitTree() { SqlDataAdapter adapter1 = atnc.page(0, "", "", "", DateTime.Now, "", "", DateTime.Now, "TreeFather"); DataSet ds = new DataSet(); adapter1.Fill(ds); gzzgTree.Nodes.Clear(); TreeNode treeNode; TreeNode treeNode1; //string parentid = ""; foreach (DataRow row in ds.Tables[0].Rows) { treeNode = new TreeNode(); treeNode1 = new TreeNode(); string fatherid = row["id"].ToString(); treeNode.ID = row["id"].ToString(); //章号 treeNode.Text = row["act"].ToString(); treeNode.NavigateUrl = "Regulation_Edit.aspx?id=" + row["id"].ToString() + ""; treeNode.Target = "cmsmain"; gzzgTree.Nodes.Add(treeNode); if (gzzgTree.Nodes.Count != 0) { SqlDataAdapter adapter2 = atnc.page(0, fatherid, "", "", DateTime.Now, "", "", DateTime.Now, "TreeSon"); DataSet ds2 = new DataSet(); adapter2.Fill(ds2); foreach (DataRow row2 in ds2.Tables[0].Rows) { treeNode1 = new TreeNode(); treeNode1.ID = row2["id"].ToString(); //部分id treeNode1.Text = row2["part"].ToString(); treeNode1.NavigateUrl = "Regulation_Edit.aspx?id=" + treeNode1.ID + ""; treeNode1.Target = "cmsmain"; treeNode.Nodes.Add(treeNode1); } } } } 用Ztree实现吧 有现成的例子· http://blog.csdn.net/wxr0323/article/details/6404253 我在gridview里面写了一个按钮,这个按钮怎么样才能根据这行的ID来处理该行的数据。 Membership读取的用户如何进行排序显示呢 错误处理的问题 这个页面的效果是用什么做的? 问一个更新的问题,这个问题很难哦! 求网络硬盘源代码! Asp在进行数据库操作时,可不可以同时访问两个数据库? 从vb.net转到c#后程序遇到的几个问题 请教高手关于得到confirm()的返回值,再线等待,急! 进入奖分 有奖等你啦 一个反射的问题。 如何设置Button的背景色
你的json数据完全可以控制在页面加载是从后台获取
1、先把类数据从数据库读取出来,比如“中式系列”、“欧式系列”,分别保存在一个变量里,如 public string m_class1='中式系列',public string m_class2='欧式系列',当然变量的值是通过sdr来读取的字段值。这样就可以放在你的前台的菜单里了,象这样绑定<%=m_class1 %>然后就可以用repeater或者DataList来绑定类里面的其他列了。
2、Extjs是个不错的工具哦。
3、还是JS啊,Ajax\jquery等等的工具
values('2','1','餐具系列')
values('3','1','茶具系列')
values('4','1','茶具系列')类推,如果新增一个根类别: values('1','0','欧式系列');
……不知道,这样说,你明不明白
如
Id name parentid
1 中式系列 0
2 餐具 1
3 茶具 1
4 杯碟 1
5 欧式系列 0
6 叉类 5
在数据库里面吧第一列。第二列。第三列的属性设置好。
然后读取出来 用treenode进行添加。
前台:<asp:Repeater ID="repleftroot" runat="server">
<ItemTemplate>
<li style="background: url(images/leftbg1.jpg) no-repeat; font-weight: 600; color: #b47220;">
<div class="l_t1">
<img src="images/jh.png" /></div>
<div class="l_t2">
<a href='products.aspx?id=<%#Eval("id")%>'><%#Eval("protypename")%></a></div>
</li>
<div class="l_xl">
<ul>
<asp:Repeater ID="repleft" runat="server">
<ItemTemplate>
<li>
<div class="l_t3">
<img src="images/jh.jpg" /></div>
<div class="l_t2">
<a href='products.aspx?id=<%#Eval("id")%>'>
<%#Eval("proname")%></a></div>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
</ItemTemplate>
</asp:Repeater>后台:数据绑定的就不写了,确认已经道出了子列的数据了写下这个,根reapter的循环事件
private void repleftroot_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater repleft = (Repeater)e.Item.FindControl("repleft");
DataRowView rowv = (DataRowView)e.Item.DataItem;
string protypename = rowv["protypename"].ToString();
repleft.DataSource = pd.GetList(" protype=" + "'" + protypename + "'");
repleft.DataBind();
}
}
按理说,每循环一次就绑定一次子节点数据应该显示啊,可是现在不显示。
private void InitTree()
{
SqlDataAdapter adapter1 = atnc.page(0, "", "", "", DateTime.Now, "", "", DateTime.Now, "TreeFather");
DataSet ds = new DataSet();
adapter1.Fill(ds);
gzzgTree.Nodes.Clear();
TreeNode treeNode;
TreeNode treeNode1;
//string parentid = ""; foreach (DataRow row in ds.Tables[0].Rows)
{
treeNode = new TreeNode();
treeNode1 = new TreeNode(); string fatherid = row["id"].ToString(); treeNode.ID = row["id"].ToString(); //章号 treeNode.Text = row["act"].ToString();
treeNode.NavigateUrl = "Regulation_Edit.aspx?id=" + row["id"].ToString() + "";
treeNode.Target = "cmsmain";
gzzgTree.Nodes.Add(treeNode);
if (gzzgTree.Nodes.Count != 0)
{
SqlDataAdapter adapter2 = atnc.page(0, fatherid, "", "", DateTime.Now, "", "", DateTime.Now, "TreeSon");
DataSet ds2 = new DataSet(); adapter2.Fill(ds2);
foreach (DataRow row2 in ds2.Tables[0].Rows)
{
treeNode1 = new TreeNode();
treeNode1.ID = row2["id"].ToString(); //部分id
treeNode1.Text = row2["part"].ToString(); treeNode1.NavigateUrl = "Regulation_Edit.aspx?id=" + treeNode1.ID + "";
treeNode1.Target = "cmsmain"; treeNode.Nodes.Add(treeNode1);
}
}
} }