treeview单选效果怎么写

玄极 2014-05-08 03:12:06
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TreeTest.aspx.cs" Inherits="test.WebForm3" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function selectCheck() {
var els = event.srcElement; //获取当前事件的对象
if (els.type == 'checkbox') {
var divId = els.id.replace('CheckBox', 'Nodes'); //获取子节点的层Id
var divObj = document.getElementById(divId); //获取层对象
if (divObj != null) {
var checkBoxs = divObj.getElementsByTagName('input'); //获取层下所有input 控件
for (var i = 0; i < checkBoxs.length; i++) {
if (checkBoxs[i].type == 'checkbox') //控件为checkbox
{
checkBoxs[i].checked = els.checked; //设置复选框状态
}
}
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" onclick="selectCheck()"
ShowLines="True">
</asp:TreeView>
</div>
</form>
</body>
</html>





using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace test
{
public partial class WebForm3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}

protected void BindData()
{
DataTable newdtb = new DataTable();
newdtb.Columns.Add("Id", typeof(int));
newdtb.Columns.Add("ProName", typeof(string));
newdtb.Columns.Add("ProPrice", typeof(decimal));
newdtb.Columns["Id"].AutoIncrement = true;

for (int i = 1; i < 3; i++)
{
DataRow newRow = newdtb.NewRow();
newRow["ProName"] = "pro" + i.ToString();
newRow["ProPrice"] = 12.3m;
newdtb.Rows.Add(newRow);
}
for (int i = 0; i < newdtb.Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = newdtb.Rows[i]["ProName"] + "=====" + newdtb.Rows[i]["ProPrice"];
TreeView1.Nodes.Add(node);
BindTreeChildNodes(node, newdtb);
}
TreeView1.ExpandDepth = 1;
}
protected void BindTreeChildNodes(TreeNode chNode, DataTable dt)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = dt.Rows[i]["ProName"] + "=====" + dt.Rows[i]["ProPrice"];
chNode.ChildNodes.Add(node);
BindTreeChildNodesCh(node, dt);
}
}

protected void BindTreeChildNodesCh(TreeNode chNode, DataTable dt)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = dt.Rows[i]["ProName"] + "=====" + dt.Rows[i]["ProPrice"];
chNode.ChildNodes.Add(node);
}
}
}
}
...全文
428 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
moyan8866 2014-09-29
  • 打赏
  • 举报
回复
这段代码好像在IE中是可以的,但在FireFox中不行吧?在FireFox中应该怎么写?
玄极 2014-05-12
  • 打赏
  • 举报
回复
不弄了,不搞了,等有空时间再继续搞,不然越高越烦还浪费时间
玄极 2014-05-12
  • 打赏
  • 举报
回复
引用 17 楼 u010067685 的回复:
建议使用jquery 那东西好用的很
你这个是 input呀 这个我会 写 我那个是用的服务器控件 treeview 他生成的是 div table a 标签这些,不好弄。
玄极 2014-05-09
  • 打赏
  • 举报
回复
不太会表达 就是 根节点和根节点 就相当于 单选框 选了这个根节点 其他的根节点和其他根节点的子节点都取消
玄极 2014-05-09
  • 打赏
  • 举报
回复
引用 13 楼 FoxDave 的回复:
根节点就是没有父节点的节点呗 我不会喷你哒,但是也只是提供思路,没时间具体写
好,谢谢啊,我先去试试
Justin-Liu 2014-05-09
  • 打赏
  • 举报
回复
根节点就是没有父节点的节点呗 我不会喷你哒,但是也只是提供思路,没时间具体写
玄极 2014-05-09
  • 打赏
  • 举报
回复
我已经被很多群里面的人喷了,完全放弃我了,我都不知道该怎么办了
玄极 2014-05-09
  • 打赏
  • 举报
回复
引用 9 楼 FoxDave 的回复:
不让多选,打错了
用什么来记录和判断他的根节点是哪一个呢
玄极 2014-05-09
  • 打赏
  • 举报
回复
引用 8 楼 FoxDave 的回复:
控制根节点不让单选是吗? 你可以记录当前选中的根节点,如果选中了别的根节点,就把记录中的根节点取消选择,然后把新的根节点记录下来
如果是在js 里面 怎么来判断他是根节点呢,不能获取节点的深度,他每一个节点的id都是自动生成的,js 也不是很熟练
Justin-Liu 2014-05-09
  • 打赏
  • 举报
回复
不让多选,打错了
Justin-Liu 2014-05-09
  • 打赏
  • 举报
回复
控制根节点不让单选是吗? 你可以记录当前选中的根节点,如果选中了别的根节点,就把记录中的根节点取消选择,然后把新的根节点记录下来
玄极 2014-05-09
  • 打赏
  • 举报
回复
引用 5 楼 mh_ma 的回复:
服务端控件应该设置它的OnClientClick事件
那个是在后台写代码哦,那设置单选的代码我不会写呢。。。能不能写一个示例呀
玄极 2014-05-09
  • 打赏
  • 举报
回复
引用 4 楼 u013789247 的回复:
你这个已经实现效果了。。。(我试的)
没有啊 我只实现了 全选的,我想在根节点跟根节点他们不能同时选,要单选
请叫我官人 2014-05-09
  • 打赏
  • 举报
回复
<script type="text/javascript"> $(function () { $("#ck_all").click(function () {//点全选的时候 if ($(this).attr("checked") == "checked") { $(".all").attr("checked", "checked"); } else { $(".all").removeAttr("checked"); } }); $(".all").click(function () { if ($(this).attr("checked") == undefined) { $("#ck_all").removeAttr("checked"); } }); } <script> <input type="checkbox" id="ck_all" />全选</label> <input type="checkbox" class="all" >test <input type="checkbox" class="all" >test1 <input type="checkbox" class="all" >test2 <input type="checkbox" class="all" >test3 <input type="checkbox" class="all" >test4
请叫我官人 2014-05-09
  • 打赏
  • 举报
回复
建议使用jquery 那东西好用的很
玄极 2014-05-09
  • 打赏
  • 举报
回复
引用 13 楼 FoxDave 的回复:
根节点就是没有父节点的节点呗 我不会喷你哒,但是也只是提供思路,没时间具体写
还是没弄好,改了一天的bug
王子文龙 2014-05-08
  • 打赏
  • 举报
回复
服务端控件应该设置它的OnClientClick事件
宇哥_ 2014-05-08
  • 打赏
  • 举报
回复
你这个已经实现效果了。。。(我试的)
玄极 2014-05-08
  • 打赏
  • 举报
回复
我知道肯定很简单,但是我刚学,是新手,不会 用,网上找了好多
玄极 2014-05-08
  • 打赏
  • 举报
回复
就是两个根节点 单选, 选一个根 他下面的所有子节点选中已经做好,要做根的 单选
加载更多回复(1)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧