当前位置:编程学习 > C#/ASP.NET >>

在Repeater控件怎么显示一对多的关系

我的页面要显示成:

                小项目1         时间      描述     
   大项目1  :  小项目1         时间      描述
                小项目1         时间      描述

                小项目2         时间      描述     
   大项目2  :  小项目2         时间      描述
                小项目2         时间      描述 --------------------编程问答-------------------- Repeater嵌套可以实现各种复杂的显示。 --------------------编程问答-------------------- 这样是不是

<%@   Page   Language= "vb "   Debug= "true "   %> 
<%@   Import   Namespace= "System.Data "   %> 
<%@   Import   Namespace= "System.Data.OleDb "   %> 

<script   language= "VB "   runat= "server "> 
dim   MyConnection   as   OleDbConnection 
dim   cmdSelect   as   OleDbCommand 
dim   dtrReader   as   OleDbDataReader 


Sub   Page_load(sender   as   object,e   as   Eventargs) 
        MyConnection   =   New   OleDbConnection(   "Provider=Microsoft.Jet.OLEDB.4.0; "   &   "Data   Source=c:\inetpub\wwwroot\nhonline\datagrid\kk.mdb ") 
        if   not   IsPostBack()   then 
        Mydatagrid_DataBind()     
end   if 
End   Sub 

Sub   Mydatagrid_DataBind() 
        Dim   MyCommand   As   OleDbDataAdapter   =   new   OleDbDataAdapter( "select   *   from   [class] ",   MyConnection) 
        Dim   DS   As   DataSet   =   new   DataSet() 
        MyCommand.Fill(DS, "board ")   
        BigClassList.DataSource=DS.Tables( "board ").DefaultView 
        BigClassList.DataBind() 
End   Sub 

Function   SmallClass(BigClassID)   as   DataTable 
  dim   SmallClassData   as   DataSet   =new   DataSet() 
  MyConnection.Open() 
  dim   DataAdapter   as   OleDbDataAdapter   =   new   OleDbDataAdapter( "SELECT   *   FROM   [board]   WHERE   class= "&   BigClassID   & " ",MyConnection) 
  DataAdapter.Fill(SmallClassData, "SmallClassData ") 
  MyConnection.Close() 
  return   SmallClassData.Tables( "SmallClassData ") 
End   Function 

</script> 
<html> 
<head> 
<title> NHONLINE_BBS_INDEX </title> 
<link   rel= "stylesheet "   href= "css.css "   type= "text/css ">   
</head> 
<body> 

<form   Runat= "server "> 
<asp:Repeater   id= "BigClassList "   runat= "server "> 
            <ItemTemplate> 
                      <TABLE   style= "BORDER-COLLAPSE:   collapse "   borderColor= "#797979 "   BgColor= "#CACACA "   cellSpacing= "0 "   cellPadding= "4 "   width= "700 "   height= "30 "   align= "center "   border= "1 ">                   
    <TR>   
                          <TD   height= "35 "   align= "left "> <B>   <FONT     COLOR= "#CC0000 "> <%#Container.DataItem( "class ")%> </FONT> </B> 
    </TD> 
                              </TR> 
                          </TABLE> 
<!--   ----------------------------------------------------------   --> 
          <TABLE   style= "BORDER-COLLAPSE:   collapse "   borderColor= "#797979 "   BgColor= "#F9F9F9 "   cellSpacing= "0 "   cellPadding= "4 "   width= "700 "   align= "center "   border= "1 "> 
          <asp:Repeater   id= "SmallClassList "   runat= "server "   DataSource= ' <%#   SmallClass(Container.DataItem( "id ").ToString())   %> '> 
      <ItemTemplate> 
                        <TR> 
                          <TD   valign= "top "> 
            <TABLE   style= "BORDER-COLLAPSE:   collapse "   borderColor= "#797979 "   BgColor= "#F9F9F9 "   cellSpacing= "0 "   cellPadding= "4 "   width= "650 "   align= "center "   border= "0 "> 
                <TR> 
                  <TD   width= "250 "> <FONT     COLOR= "#330099 "> 
  <A   HREF= ' <%# "List_5_5.aspx?BoardID= "&   Container.DataItem( "boardid ")%> '> <%#Container.DataItem( "boardtype ")%> </A>   </FONT> 
    </TD> 
                </TR> 
            </TABLE> 
      </TD> 
</TR> 
              </ItemTemplate> 
          </asp:Repeater>   
          </TABLE> 
                    </ItemTemplate> 
</asp:Repeater>   
</form> 
</body> 
</html> 


--------------------编程问答-------------------- repeater嵌套做 --------------------编程问答-------------------- 1、Repeater嵌套
2、后台输出 --------------------编程问答-------------------- repeater 嵌套
private void RpTypeBind()
        {//GetQuestionTypeAndCount() 返回一个datatable
            this.rptypelist.DataSource = LiftQuestionCtr.GetQuestionTypeAndCount();                   
            this.rptypelist.DataBind();
        }
               protected void rptypelist_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {

//判断里层repeater处于外层repeater的哪个位置( AlternatingItemTemplate,FooterTemplate,

//HeaderTemplate,,ItemTemplate,SeparatorTemplate)
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater rep = e.Item.FindControl("rpquestionlist") as Repeater;//找到里层的repeater对象
                DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项 
                int typeid = Convert.ToInt32(rowv["qtid"]); //获取填充子类的id 
                rep.DataSource = LiftQuestionCtr.GetSomeQuestionsByTypeid(typeid, 2);
                rep.DataBind();
            }
        }

<table border="0" cellpadding="0" cellspacing="0" style="margin-bottom: 5px" width="100%">
    <asp:Repeater runat="server" ID="rptypelist" OnItemDataBound="rptypelist_ItemDataBound">
        <ItemTemplate>
            <tr>
                <td class="fb">
                      <a href="Lists.aspx?Qtid=<%#Eval("qtid") %>"><%#Eval("qtypename") %></a> <span id="askCount_15"
                        class="date2">[<%#Eval("typecount")%>]</span>
                </td>
            </tr>
            <tr>
                <td>
                    <div id="askTop2_15" class="ask_list">
                        <asp:Repeater runat="server" ID="rpquestionlist">
                            <ItemTemplate>
                                <a href="Question.aspx?qid=<%#Eval("liftquestionid")%>">
                                    <%#Eval("questiontitle")%></a><br />
                            </ItemTemplate>
                        </asp:Repeater>
                    </div>
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>
--------------------编程问答-------------------- 参见
http://dotnet.aspx.cc/Exam/GridViewNested2.aspx
http://dotnet.aspx.cc/article/f73eeaa9-2bdc-47fd-afd2-59f2fa4897f5/read.aspx --------------------编程问答-------------------- repeater --------------------编程问答-------------------- 我的页面只放一个repeater控件啊,哪要怎么实现呢 --------------------编程问答--------------------   <asp:Panel ID="panlList" CssClass="ui-corner-all" runat="server">
        <table id="tblist" cellspacing="1"  border="0" class="ui-corner-all ui-table-white" width="100%">
        <asp:Repeater ID="rpMyTaskList"  runat="server"  OnItemDataBound="rpMyTaskList_ItemDataBound" >
        <HeaderTemplate>
        <thead><tr><th colspan="5">
        List of today's entries:
        </th></tr>
        <tr>
        <th style="display:none"></th>
        <th>Task</th>
        <th>Date</th>
        <th>Hours</th>
        <th>Note</th>
        <th>Action</th>
        </tr>
        </thead>
        </HeaderTemplate>
        <ItemTemplate>
        <tr>
        <td style="display:none;"><asp:Label ID="lbHeader" runat="server" Text='<%# Eval("TSHeaderID") %>'></asp:Label></td>
        <td style="display: none;"><asp:Label ID="lbtaskCd" runat="server" Text='<%# Eval("TaskCd")%>'></asp:Label>
        </td>
            <td>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("AccountCd").ToString() + ": " + Eval("Descr").ToString()%>'></asp:Label>
            </td>
                <td>
                  <asp:Label ID="lbDate" runat="server" Text='<%# Eval("Date","{0:MM/dd/yyyy}")%>'>  </asp:Label>
                </td>
                <td><asp:TextBox ID="txtHours" Width="50px" onblur="calTotal(this)" runat="server" Text='<%# PopulateHours(Eval("Hours")) %>'></asp:TextBox>
        <asp:RegularExpressionValidator ID="reHour" runat="server" ControlToValidate="txtHours" 
        ErrorMessage="Invalid hours." ValidationGroup="vEdit" ValidationExpression="^\d+$|^\d+?\.?\d+$">
        </asp:RegularExpressionValidator>
        <br />
        <asp:Label ID="lblHoursInfor" runat="server">
        <%# ShowHoursInfor(Eval("UserID"), Eval("AccountCd"),Eval("TaskCd"))%>        
                </asp:Label>
                </td>
        <td><asp:TextBox ID="txtNote" TextMode="multiline"  Rows="2" Width="400px" runat="server" Text='<%# Eval("Note") %>'></asp:TextBox>
        </td>
        <td align="center"><asp:Button ID="btDelete" runat="server" CommandArgument='<%# Eval("id") %>' OnCommand="btDelete_OnCommand" Text="删除" /></td>
        </tr>
        </ItemTemplate>
        <FooterTemplate>
        <tr>
        <th align="center" colspan="5" id="thTotal">Total Hours:<asp:Label ID="lbTotal" runat="server" ForeColor="red"></asp:Label></label></th>
        </tr>
        </FooterTemplate>
        </asp:Repeater>
        </table>
   </asp:Panel>

我要在 <td>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("AccountCd").ToString() + ": " + Eval("Descr").ToString()%>'></asp:Label>
            </td>输出那个效果 --------------------编程问答-------------------- Label 是没有表格效果的,

思路都给你了,用什么控件不是改一下就行了吗?我不明白使用Label 你要显示什么效果? --------------------编程问答-------------------- 如我不想用repeater控件嵌套实现,应该怎么办呢 --------------------编程问答-------------------- 怎么办?有很多种方法啊,你可以循环拼接字符串显示,

你为什么不想进行嵌套? --------------------编程问答-------------------- 用嵌套好,而且用得样式定义起来灵活 --------------------编程问答-------------------- 应为我是在别人做好的页面上实现那个功能 --------------------编程问答-------------------- 嵌套吧  听话。。。 --------------------编程问答-------------------- 可以用中间表在数据库中处理,不需要在页面上面处理,希望对你有帮助 --------------------编程问答-------------------- 那用嵌套的话怎么改,能帮我改改吗?
 <table id="tblist" cellspacing="1"  border="0" class="ui-corner-all ui-table-white" width="100%">
        <asp:Repeater ID="rpMyTaskList"  runat="server"  OnItemDataBound="rpMyTaskList_ItemDataBound" >
        <HeaderTemplate>
        <thead><tr><th colspan="5">
        List of today's entries:
        </th></tr>
        <tr>
        <th style="display:none"></th>
        <th>Task</th>
        <th>Date</th>
        <th>Hours</th>
        <th>Note</th>
        <th>Action</th>
        </tr>
        </thead>
        </HeaderTemplate>
        <ItemTemplate>
        <tr>
        <td style="display:none;"><asp:Label ID="lbHeader" runat="server" Text='<%# Eval("TSHeaderID") %>'></asp:Label></td>
        <td style="display: none;"><asp:Label ID="lbtaskCd" runat="server" Text='<%# Eval("TaskCd")%>'></asp:Label>
        </td> 
            <td>
<!--这边是循环显示小项目出来的地方-->
            <asp:Label ID="Label1" runat="server" Text='<%# Eval("AccountCd").ToString() + ": " + Eval("Descr").ToString()%>'></asp:Label>
            </td>
                <td>
                  <asp:Label ID="lbDate" runat="server" Text='<%# Eval("Date","{0:MM/dd/yyyy}")%>'>  </asp:Label>
                </td>
                <td>
                <asp:TextBox ID="txtHours" Width="50px" onblur="calTotal(this)" runat="server" Text='<%# PopulateHours(Eval("Hours")) %>'></asp:TextBox>
        <asp:RegularExpressionValidator ID="reHour" runat="server" ControlToValidate="txtHours" ErrorMessage="Invalid hours." ValidationGroup="vEdit" ValidationExpression="^\d+$|^\d+?\.?\d+$"/>
        <br />
        <asp:Label ID="lblHoursInfor" runat="server">
        <%# ShowHoursInfor(Eval("UserID"), Eval("AccountCd"),Eval("TaskCd"))%>        
                </asp:Label>
                </td>
        <td><asp:TextBox ID="txtNote" TextMode="multiline"  Rows="2" Width="400px" runat="server" Text='<%# Eval("Note") %>'></asp:TextBox>
        </td>
        <td align="center"><asp:Button ID="btDelete" runat="server" CommandArgument='<%# Eval("id") %>' OnCommand="btDelete_OnCommand" Text="删除" /></td>
        </tr>
       
        </ItemTemplate>
        <FooterTemplate>
        <tr>
        <th align="center" colspan="5" id="thTotal">Total Hours:<asp:Label ID="lbTotal" runat="server" ForeColor="red"></asp:Label></label></th>
        </tr>
        </FooterTemplate>
        </asp:Repeater>
        </table>
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,