none
gridview问题? RRS feed

  • 问题

  • 请问msdn的ASP.NET  与 AJAX 中的绑定数据源控件是gridview吗?要是是的话,那么那个点击某一行在这一行和下一行的中间的数据绑定控件也是gridview吗?具体的实现点击事件展开和隐藏详细信息的事件是怎么编程的,看到后很是好奇,也想做一个试试,但是在网上找了好半天也没有找到实现这个功能的方法。还请各位老师多指教,最好能给个参考的例子,谢谢!!!
    msdn
    2009年4月10日 8:28

答案

  • 下面是一个伪代码,详细的东西可以自己控制

    <a href="" onclick='getData(<%#Eval("xxxxID")%>);return false;'> <%#DataBinder.Eval(Container.DataItem,"bt" ) %> </a>
    <div id='content<%#Eval("xxxxID")%>' style='display:none'></div>
    
    
    
    
    
    
    <script>
    function getData(dataID)
    {
     if(document.getElementById("content" + dataID).style.display != "none")
     {
       document.getElementById("content" + dataID).style.display = "none"
       return;
     }
     else
     {
     	 document.getElementById("content" + dataID).style.display = ""
    	 if(document.getElementById("content" + dataID).innerHTML == "") //或者其他的内容
    	 {
    	 	var x = new XMLHttpRequest();
    	 	x.open("GET","GetReply.aspx?id=" + dataID,false)
    	 	x.send(null);
    	 	if(x.status == 200)
    	 	{
    	 	 if(x.readyState==4)
    	 	 {
    	 	  document.getElementById("content" + dataID).innerHTML = x.responseText;
    	 	 }
    	 	}
    	 }
     }
    }
    </script>
    

    值得注意的是:绑数据绑定不止是只有GridView,还有repeater,datalist,listview等,选择一个不会生成table的控件,listview,在Item模板里面采用
    <div><a href="" onclick='getData(<%#Eval("xxxxID")%>);return false;'> <%#DataBinder.Eval(Container.DataItem,"bt" ) %> </a></div>
    <div id='content<%#Eval("xxxxID")%>' style='display:none'></div>

    进行绑定就可以了,显示成什么样子,自己再进行增删,主要的思路就是这样的
    孟宪会
    • 已标记为答案 myhmsdn 2009年4月13日 1:47
    2009年4月11日 1:34
    版主

全部回复

  • 不太理解你的需求。你指的是本论坛的效果?
    孟宪会
    2009年4月10日 8:41
    版主
  • 比如:开始只显示的是提问者的问题

    如果点击问题的那一行,就会在这行的下面显示出所有回答者答复的详细信息

    再点击问题的那一行,这行的下面显示出所有回答者答复的详细信息将会隐藏起来,

    这个效果是怎么实现的呀?

     


    msdn
    2009年4月10日 8:59
  • 这个就是div.style.display="none",div.style.display=""就能实现了。第一次点击的时候加载数据,并显示.display="",再次点击隐藏.display="none",以后再点击就不要再次取数据了
    本论坛不是采用的gridview,采用的div布局,
    你如果对div+css布局了解,应该很好理解
    孟宪会
    2009年4月10日 9:15
    版主
  • 楼主,你好,请参考,
    http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Accordion/Accordion.aspx
    jon.valett@gmail.com
    2009年4月10日 9:23
    版主
  • 邹俊才的回答是有这个效果,但是数据不是动态的,还是很感谢的,



    但是孟老师数的用DIV进行布局,有点迷惑,那数据怎么动态显示在页面上,而且每一行的数据都不同,详细信息也就不同呀。

    还请各位老师给个小的例子看看比较好,非常感谢。


    msdn
    2009年4月11日 0:42
  • 下面是一个伪代码,详细的东西可以自己控制

    <a href="" onclick='getData(<%#Eval("xxxxID")%>);return false;'> <%#DataBinder.Eval(Container.DataItem,"bt" ) %> </a>
    <div id='content<%#Eval("xxxxID")%>' style='display:none'></div>
    
    
    
    
    
    
    <script>
    function getData(dataID)
    {
     if(document.getElementById("content" + dataID).style.display != "none")
     {
       document.getElementById("content" + dataID).style.display = "none"
       return;
     }
     else
     {
     	 document.getElementById("content" + dataID).style.display = ""
    	 if(document.getElementById("content" + dataID).innerHTML == "") //或者其他的内容
    	 {
    	 	var x = new XMLHttpRequest();
    	 	x.open("GET","GetReply.aspx?id=" + dataID,false)
    	 	x.send(null);
    	 	if(x.status == 200)
    	 	{
    	 	 if(x.readyState==4)
    	 	 {
    	 	  document.getElementById("content" + dataID).innerHTML = x.responseText;
    	 	 }
    	 	}
    	 }
     }
    }
    </script>
    

    值得注意的是:绑数据绑定不止是只有GridView,还有repeater,datalist,listview等,选择一个不会生成table的控件,listview,在Item模板里面采用
    <div><a href="" onclick='getData(<%#Eval("xxxxID")%>);return false;'> <%#DataBinder.Eval(Container.DataItem,"bt" ) %> </a></div>
    <div id='content<%#Eval("xxxxID")%>' style='display:none'></div>

    进行绑定就可以了,显示成什么样子,自己再进行增删,主要的思路就是这样的
    孟宪会
    • 已标记为答案 myhmsdn 2009年4月13日 1:47
    2009年4月11日 1:34
    版主
  • 数据表示可能是通过GridView来做,但是效果一般是使用Javascript框架来做的。
    2009年4月12日 0:34
  • GridView的性能不是很好,我想如果是GridView的话,就不会这么快了。
    做最好的自己
    2009年4月12日 1:49