CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

超级无敌、变态的界面实现,请各位大大帮忙。谢谢,在线等。

楼主pantian(香草园主)2005-11-13 16:50:46 在 .NET技术 / ASP.NET 提问

我想实现这样一个界面:  
   
  整个界面是个表格样式。  
  -------------------------------------------  
  |产品线一                                                                     |  
  -------------------------------------------  
  |项目名称   |   产品名称   ||   项目名称   |   产品名称|  
  --------------------------------------------  
  |项目一       |口产品一     ||   项目二       |   口产品二|  
  --------------------------------------------  
  |项目三       |口产品三     ||   项目四       |   口产品四|  
  --------------------------------------------  
   
  说明:    
  第一行:产品线名称。  
  第二行:  
          第一列:项目名称;  
          第二列:产品名称,对应第一列的项目,前面有个CheckBox。  
          第三列:项目名称;  
          第四列:产品名称,对应第三列的项目,前面有个CheckBox。  
   
  产品线是从数据库动态查询出来的。  
  项目、产品也是从数据库动态查询出来的。注意是一行排放两个产品信息。  
  然后,把上面的这个格式,再重复N多次,放在上一产品线的下面,直到所有的产品线都显示出来。  
   
  这样的界面该怎么做?我用过GridView,但没做出这种效果。我用的是VS2005。  
  请各位高手多多支持一下。谢谢。 问题点数:200、回复次数:24Top

1 楼ld_thinking(懒得想)回复于 2005-11-13 16:52:52 得分 0

repeater   嵌入datalist就okTop

2 楼pantian(香草园主)回复于 2005-11-13 16:58:02 得分 0

我对repeater不太熟悉,但怎么能动态重复多个产品线呢?  
   
  我马上试试看,楼上的最好能给点思路,好吗?Top

3 楼cshmai(四海为家)回复于 2005-11-13 16:59:40 得分 0

看了就头疼,帮你顶Top

4 楼codeangel(http://www.wSoft.Net)回复于 2005-11-13 17:00:37 得分 0

用html画出来吧Top

5 楼jxufewbt(我的目标是5星)回复于 2005-11-13 17:00:38 得分 0

http://dotnet.aspx.cc/ShowDetail.aspx?id=0BF1E82C-A30A-4B5B-85B2-8DB339A41D37Top

6 楼codeangel(http://www.wSoft.Net)回复于 2005-11-13 17:02:13 得分 100

GridView可以做出这样的样子的。  
  曾经用datagrid做过这样的样子。Top

7 楼pantian(香草园主)回复于 2005-11-13 17:06:30 得分 0

哦,楼上的兄弟,能不能再说得详细一点,或者给我一个例子也行呀。  
   
  注意第二列、第四列,都还有一个CheckBox是可以使用的。  
   
  还有,怎么重复产品线。产品线单独占一行的,项数也是不固定的。再次谢谢各位。Top

8 楼remymartin(杯中明月)回复于 2005-11-13 17:27:58 得分 0

用DATAGRID1的模板列嵌套一个datagrid2,但datagrid2的事件要单独注册,或者datagrid2里的控件要单独注册.Top

9 楼pantian(香草园主)回复于 2005-11-13 18:25:38 得分 0

我这个问题真的很麻烦吗?各位有没有简单一点的方法呀Top

10 楼gnhao(何飞)回复于 2005-11-13 18:33:32 得分 0

用datareader(开销少)要么就用xml然后用数据岛就可能了,第二个方法开销更少哦...呵不用xsl转换都行Top

11 楼gnhao(何飞)回复于 2005-11-13 18:38:03 得分 0

<xml   version="1.0"   encoding="gb2312">  
  <项目>  
  <1>XXX123</1>  
  <2>XXXX456</2>  
  </项目>  
  XX.xml  
  <html   >  
  <body>  
  <xml   id="test"   src=XX.html></xml>  
  <div   datasrc=#test   datafld=1或2></div>  
  </body>  
  </html>  
  我用手写的,大样就是这样,很爽吧,这样在div中就可以显示XXX123或XXX456了Top

12 楼gnhao(何飞)回复于 2005-11-13 18:39:14 得分 0

哦xx.xml上边是个xml文件一边是个html文件,这就是数据岛啊Top

13 楼pantian(香草园主)回复于 2005-11-13 19:57:46 得分 0

我的数据不是取不出来,在数据库里都可以很方便地以各种方式取出来的。  
   
  只是不知道该怎么把这些数据动态地放到,像我那样的界面中去。不过,还是谢谢你。Top

14 楼CnEve(龙哥哥)回复于 2005-11-13 20:04:00 得分 40

用   Repeater   控件吧,内部可以嵌入HTML比较灵活。  
  你最好先用html把需要的表格画出来Top

15 楼pantian(香草园主)回复于 2005-11-13 21:21:51 得分 0

好啦,我自己搞定了,最后还是用一个GridView控件就搞定了。  
   
  只是效率可能确实不咋的。不过,幸好数据量应该不会很大,所以,也就无所谓了。(我把所有的数据遍历了一下,加了一些自定义的格式行,然后组成一个新的datatable,最后,再填充到GridView。)  
   
  呵呵,谢谢各位捧场。过2天再结贴,再看看还有没有更好的方法。  
   
  上面的各位大大会得到所有的200分。后面有好方法的,我会再开足够的贴,每贴再200分。Top

16 楼cityhunter172(寒羽枫)回复于 2005-11-13 21:48:07 得分 30

使用   Repeater   嵌套   DataList   就可以达到效果  
  具体看   http://172.meibu.com   →   IT   内部网   →   内部管理   →   专案进度   →   查询  
   
  编写   ItemDataBound   事件  
  private   void   RP_Info_ItemDataBound(object   sender,   System.Web.UI.WebControls.RepeaterItemEventArgs   e)  
  {  
        if(e.Item.ItemIndex>=0)  
        {  
            DataList   D   =   e.Item.FindControl("DataList1")   as   DataList;  
            DataTable   dt   =   new   DataTable();  
            string   line   =   DataBinder.Eval(e.Item.DataItem,"产线   ID");  
            dt   =   GetLineDetail(line);//获取此产线的所有项目与产品名称  
            D.DataSource=dt;  
            D.DataBind();  
            D   =   e.Item.FindControl("DataList2")   as   DataList;  
            dt   =   GetLineDetail2(line);//同理,自行编写实现此方法  
            D.DataSource=dt;  
            D.DataBind();  
          }  
  }  
   
  一个   HtmlButton   控制一个   <tr></tr>   ,注意其   ID   的对应关系  
   
  <asp:repeater   id="RP_Info"   Runat="server">  
  <HeaderTemplate>  
          <table   id="Repeater1">  
              <tr>  
                  <td>产线名称</td>  
                  <td>产量</td>  
                  <td>其它1</td>  
                  <td>其它2</td>  
              </tr>  
  <ItemTemplate>  
              <tr>  
                  <td><%#DataBinder.Eval(Container.DataItem,"产线名称")%></td>  
                  <td><%#DataBinder.Eval(Container.DataItem,"产量")%></td>  
                  <td><INPUT   type="button"   value="查看"   onclick="DisplayView(this);"   id="Btn_Swtich1"   runat="server"   NAME="Btn_Swtich1"></td>  
                  <td><INPUT   type="button"   value="查看"   onclick="DisplayView(this);"   id="Btn_Swtich2"   runat="server"   NAME="Btn_Swtich2"></td>  
              </tr>  
              <tr   runat="server"   id="trView1"   style="DISPLAY:   none">  
                  <td   colspan="4">其它1   ———这里可以加你想的东东<br>  
                  <asp:DataList   id="DataList1"   style="Z-INDEX:   101;   LEFT:   96px;   POSITION:   absolute;   TOP:   96px"   runat="server"   RepeatColumns="2"   RepeatDirection="Horizontal">  
  <HeaderTemplate>  
                        <TABLE   WIDTH="100%"   BORDER="0"   CELLSPACING="0"   CELLPADDING="0">  
  <TR>  
  <TD>项目名称</TD>  
  <TD>产品名称</TD>  
  <TD>项目名称</TD>  
  <TD>产品名称</TD>  
  </TR>  
  </TABLE>  
  </HeaderTemplate>  
  <ItemTemplate>  
  <TABLE   WIDTH="100%"   BORDER="0"   CELLSPACING="0"   CELLPADDING="0">  
  <TR>  
  <TD><asp:Label   id="L_ProjectName"   runat="server"   Text='<%#DataBinder.Eval(Container.DataItem,"项目名称")%>'></asp:Label></TD>  
  <TD><asp:Label   id="L_ProductName"   runat="server"   Text='<%#DataBinder.Eval(Container.DataItem,"产品名称")%>'></asp:Label></TD>  
  </TR>  
  </TABLE>  
                                </ItemTemplate>  
  </asp:DataList>  
                  </td>  
              </tr>  
              <tr   runat="server"   id="trView2"   style="DISPLAY:   none">  
                  <td   colspan="4">其它2   ———这里可以加你想的东东<br>  
              <asp:DataList   id="DataList2"   style="Z-INDEX:   101;   LEFT:   96px;   POSITION:   absolute;   TOP:   96px"   runat="server"   RepeatColumns="2"   RepeatDirection="Horizontal">  
  <HeaderTemplate>  
                        <TABLE   WIDTH="100%"   BORDER="0"   CELLSPACING="0"   CELLPADDING="0">  
  <TR>  
  <TD>项目名称</TD>  
  <TD>产品名称</TD>  
  <TD>项目名称</TD>  
  <TD>产品名称</TD>  
  </TR>  
  </TABLE>  
  </HeaderTemplate>  
  <ItemTemplate>  
  <TABLE   WIDTH="100%"   BORDER="0"   CELLSPACING="0"   CELLPADDING="0">  
  <TR>  
  <TD><asp:Label   id="L_ProjectName"   runat="server"   Text='<%#DataBinder.Eval(Container.DataItem,"项目名称")%>'></asp:Label></TD>  
  <TD><asp:Label   id="L_ProductName"   runat="server"   Text='<%#DataBinder.Eval(Container.DataItem,"产品名称")%>'></asp:Label></TD>  
  </TR>  
  </TABLE>  
                                </ItemTemplate>  
  </asp:DataList>  
                   
                  </td>  
              </tr>  
  </ItemTemplate>  
  <FooterTemplate>  
  </TABLE>  
  </FooterTemplate>  
  </asp:repeater>  
   
   
  制的脚本如下:  
  var   click_td   ;                   //点击的权限窗体  
  var   view_td   =   new   Array();                   //存储已显示的权限窗体  
   
  //显示具体内容  
  function   DisplayView(obj)    
  {  
        var   isDisplay   =false,tdIndex=0;    
        var   id   =   obj.id.replace("Btn_Swtich","trView");   //替换ID  
        click_td   =   document.getElementById(id);  
        for   (var   i   in   view_td)  
        {    
            var   id2=click_td.id.substr(0,click_td.id.length-1);  
            var   id3=view_td[i].id.substr(0,view_td[i].id.length-1);  
            if(id2   ==   id3)   {    
              //比较两者ID   去掉尾数后是否一样          
                  isDisplay   =true;   //所点击的   TD   为同一层  
                  if(click_td.id==view_td[i].id){  
                  //如果点击的   TD   在数组里,则返回序号  
                        tdIndex=i;        
                  }  
            }  
        }  
          if(isDisplay)  
          {  
              if(click_td.style.display=="none")  
              {  
                  click_td.style.display="";  
                  //加入数组  
                  view_td.push(click_td);    
              }  
              else  
              {  
                  click_td.style.display="none";  
                  //根据序号移除该窗体  
                  view_td.splice(tdIndex,1);    
              }  
          }  
          else  
          {  
              for   (var   i   in   view_td){  
                    //关闭所有已显示的窗体  
                    view_td[i].style.display="none";    
              }  
              view_td   =   new   Array();   //清空  
              view_td.push(click_td);//加入刚刚点击的窗体  
              click_td.style.display="";  
          }  
  }  
  Top

17 楼cityhunter172(寒羽枫)回复于 2005-11-13 21:49:23 得分 10

要把   style="Z-INDEX:   101;   LEFT:   96px;   POSITION:   absolute;   TOP:   96px"   这句删除Top

18 楼cityhunter172(寒羽枫)回复于 2005-11-13 21:53:00 得分 10

再次更正  
            string   line   =   DataBinder.Eval(e.Item.DataItem,"产线   ID");  
  改成  
            string   line   =   DataBinder.Eval(e.Item.DataItem,"产线   ID").ToString();  
  Top

19 楼clxxj(查无此人)回复于 2005-11-14 00:14:52 得分 0

studyTop

20 楼www8s88com(秋天的童话.NET)回复于 2005-11-14 17:06:14 得分 0

我以前做过一排自定义放几个的,建议你用数组。一排放N个,那么第一排是1-N,第二排是N+1到2N,以此类推知道aN,用取商判断a是多少,取余来判断是否还需要换行。Top

21 楼pantian(香草园主)回复于 2005-11-16 16:30:27 得分 0

再顶顶Top

22 楼chenhaoying(风雨无阻)回复于 2005-11-16 17:49:08 得分 0

用模板列试试Top

23 楼njuzgj(罐子)回复于 2005-11-16 22:24:08 得分 0

帮你顶吧Top

24 楼syeerzy(快乐永远*先天下之乐而乐*后天下之忧而忧*)回复于 2005-11-16 22:50:12 得分 10

Repeater+DataList嵌套起来就够了.Top

相关问题

  • 超级无敌菜鸟求问!
  • 超级变态怪问题
  • 超级变态的函数声明!
  • 今日公车遭遇超级变态
  • 超级搞笑而变态的回复,笑死人不赔命
  • 一个超级变态的查询 求一条救命SQL
  • 超级郁闷变态的 ADOQuery->ExecSQL();的问题——————
  • 询问一个关于OCX控件超级变态的问题
  • 用BCB做soft界面天下无敌,敢问Windows Media Player的可是化效果怎样实现的?用OpenGL行否?
  • 受不了啦!超级变态的问题,关于页面刷新定位。

关键词

  • 界面
  • 项目
  • datagrid
  • 产品
  • 谢谢
  • 名称
  • 线
  • 动态
  • checkbox

得分解答快速导航

  • 帖主:pantian
  • codeangel
  • CnEve
  • cityhunter172
  • cityhunter172
  • cityhunter172
  • syeerzy

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo