关于Ajax刷新Treeview控件中内容的问题

yao991118 2009-07-07 04:02:39
我所获取的数据格式如下:
学校1
学生1
学生2
学校2
学生1
学生2
学生3
学校3
学生1
其中学校1,2,3父节点用ajax刷新不会变化不会有学校4的出现,但他们的子节点的个数是有可能变化的,也就是说学校1的子节点刷新后可能会变成学生1、学生2、学生3,也有可能变少;

我的代码有异常,我还是贴出来给大家看看,希望有大家能指点我的错误之处,或是给个其他的方法给我,不是光说要附加有源代码,谢谢!
我的代码:
Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(Default));
}

[Ajax.AjaxMethod]
public string GetAjaxInfo()
{
string s = string.Empty;
try
{
TreeView tv = new TreeView();
tv.Nodes.Clear();
tv.Width = 300;
this.CreateTreeView(tv, this.CreateTestData());//获取treeview中绑定的数据
System.Text.StringBuilder strb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(strb);
System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);
tv.RenderControl(htw);
s = strb.ToString();
}
catch (Exception en)
{
Response.Write(en.Message);
}
return s;//最后就是返回这个html啦
}
Default.aspx
<head runat="server">
<title>无标题页 </title>
<script language="javascript" type="text/javascript">
function LoadGrid()
{
  var bb=document.getElementById("Td1");
  bb.innerHTML=Default.GetAjaxInfo().value;
  window.setTimeout(LoadGrid,10000);
}
</script>
</head>
<body onload="LoadGrid()">
<form id="form1" runat="server">
<div>
<table border="0">
<tr>
<td id="Td1" style="width: 1024px"> </td>
</tr>
</table>
</div>
</form>
</body>
执行到这里:tv.RenderControl(htw);
就发生错误:"未将对象引用设置到对象的实例。"


希望高手能帮帮我解决一下这个问题,谢谢了!
...全文
194 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
yao991118 2009-07-08
  • 打赏
  • 举报
回复
ustbwuyi:
说用JQuery,我看不懂到底怎么用,给我的那一点代码我也不知道有何用处,不好意思,本人资质有限,能具体的给我处理一下吗?
owenxin26 2009-07-08
  • 打赏
  • 举报
回复
用UpdatePanel我觉得挺好啊,有现成的东西为什么不用,性能上基本没有影响。

然后设置个timer控件配合Panel每10秒刷新一次。
yao991118 2009-07-08
  • 打赏
  • 举报
回复
异常: Message "未将对象引用设置到对象的实例。" string
游北亮 2009-07-08
  • 打赏
  • 举报
回复
<td id="Td1" style="width: 1024px">
<asp:TreeView ID="tv1" runat="server"></asp:TreeView> </td>

然后把后台代码:
TreeView tv = new TreeView();
改成:TreeView tv = tv1;

其它照旧
yao991118 2009-07-08
  • 打赏
  • 举报
回复
我的是每隔10秒刷新一次TreeView绑定的内容,谢谢
游北亮 2009-07-08
  • 打赏
  • 举报
回复
干吗用别的控件?
TreeView本身就支持Ajax功能

参考:http://blog.csdn.net/youbl/archive/2009/07/06/4325516.aspx
ustbwuyi 2009-07-07
  • 打赏
  • 举报
回复
例子我直接贴在上面了,你直接看就明白了,参数化很容易懂的
ustbwuyi 2009-07-07
  • 打赏
  • 举报
回复

function Search()
{
$.ajax({
type:"POST",
url:"WebAjaxGetData.aspx",
data:'',
success:function(response)
{
$("#Td1").html(response);
},
error:function(xhr){
alert('error');
}
});
}
yao991118 2009-07-07
  • 打赏
  • 举报
回复
能给个例子给我吗,我的邮箱是wukai520.520@163.com
最好可以仿照着做的,是在是太感谢了
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chen_ya_ping 的回复:]
楼主你用的是ajaxPro吧,好像跟服务器端有关的东西都是不能用的。比如session
[/Quote]

Session可以使用

杨永强个人站点:http://www.developceo.cn/
ustbwuyi 2009-07-07
  • 打赏
  • 举报
回复
先下个JQuery文件:http://docs.jquery.com/Release:jQuery_1.3.2

引用到你的项目中,然后就可以用了,用Ajax的话很简单的.
你可以在http://jquery.com上有一些示例材料.
等会给你一个简单例子
yao991118 2009-07-07
  • 打赏
  • 举报
回复
用JQuery,能不能具体的教教我怎么做呀,没有接触过
yao991118 2009-07-07
  • 打赏
  • 举报
回复
ustbwuyi:
谢谢,这样是个好方法
ustbwuyi 2009-07-07
  • 打赏
  • 举报
回复
个人建议你用手动创建XMLHttpRequest对象的方式(用JQuery也可以),因为你想要学Ajax的话,迟早要掌握这种方式的,而不是一味的使用别人的框架
ustbwuyi 2009-07-07
  • 打赏
  • 举报
回复
其实你如果不用ajax.dll反而更容易实现,比如说你直接手动创建XMLHttpRequest对象的方式就很好实现,
当然你也可以用JQuery里面自带的Ajax来实现,你需要将请求发送到另外一个页面,在另外一个页面上有一个TreeView控件,你绑定之后然后用RenderControl方法输出它的html代码,再response回来,这样实现起来相当容易.

参考方式:http://www.cnblogs.com/ustbwuyi/archive/2007/03/19/679586.html
yao991118 2009-07-07
  • 打赏
  • 举报
回复
也就是说我这种方法完全不能实现喽?
chen_ya_ping 2009-07-07
  • 打赏
  • 举报
回复
楼主你用的是ajaxPro吧,好像跟服务器端有关的东西都是不能用的。比如session
snoopy83101 2009-07-07
  • 打赏
  • 举报
回复
treeview可以绑定datarow数据行对象的!
放在UPDATEPANEL中就可以实现无刷新.楼主,这很简单.
ustbwuyi 2009-07-07
  • 打赏
  • 举报
回复
具体原因说不太清楚,可能是因为不能调用RenderControl方法的缘故

你这个单纯的是从页面调后台的数据,然后你在后台自己创建了一个TreeView,那么其实这个
TreeView对客户端来说是不存在的,它没有DataBind,在客户端也无法呈现,可能因为这个原因而使它无法调用RenderControl方法
yao991118 2009-07-07
  • 打赏
  • 举报
回复
UpdatePanel,不用框架,就用我的方法来实现,难道不想吗?
加载更多回复(1)

62,046

社区成员

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

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

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

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