asp.net 控件的嵌套

/* 增加关系 */
//后台代码
SqlConnection cnn = new SqlConnection("server=(local);database=pubs;uid=sa;pwd=qinfei;");
SqlDataAdapter cmd1 = new SqlDataAdapter("select * from authors",cnn);
DataSet ds = new DataSet();
cmd1.Fill(ds,"authors");
SqlDataAdapter cmd2 = new SqlDataAdapter("select * from titleauthor",cnn);
cmd2.Fill(ds,"titles");
ds.Relations.Add("myrelation", ds.Tables["authors"].Columns["au_id"], ds.Tables["titles"].Columns["au_id"]);
parent.DataSource = ds.Tables["authors"];
Page.DataBind();
cnn.Close();

//页面代码
<!-- 父控件 -->
<asp:Repeater id="parent" runat="server">
   <ItemTemplate>
      <b> <%# DataBinder.Eval(Container.DataItem,"au_id") %></b> <br>
      <!-- 子控件 -->                           <!-- 捆绑数据源,在后台已建立了myrelation 的关系  -->
      <asp:Repeater id="child" datasource='
<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %>' runat="server"> 
         <ItemTemplate>
            
<%# DataBinder.Eval(Container.DataItem, "[\"title_id\"]")%> <br>  <!-- 子控件捆绑数据后调用数据时,方法内的Row参数需加 [""] -->
         </ItemTemplate>
      </asp:Repeater>
      <!-- 子控件 -->
   </ItemTemplate>
</asp:Repeater>
<!-- 父控件 -->


/* 给子控件捆绑数据源 */
//后台代码
private void Page_Load(object sender, System.EventArgs e)
{
   if(!IsPostBack)
      BindData();
}
//取得数据
private void BindData()
{
   string sqlStmt = "SELECT * FROM Customers; SELECT * FROM Orders";
   string conString = "server=localhost;database=Northwind;uid=sa;pwd=;";

   SqlDataAdapter sda = new SqlDataAdapter(sqlStmt, conString);

   sda.Fill(ds);
   ds.Tables[0].TableName = "Customers";
   ds.Tables[1].TableName = "Orders";

   DataGrid1.DataSource = ds.Tables["Customers"];
   DataGrid1.DataBind();
}
//取返回数的方法,前台页面子控件中可直接调用
protected DataView getOrdersDataSource(string _customerID)
{
   DataView _orders = ds.Tables["Orders"].DefaultView;
   _orders.RowFilter = "CustomerID='" + _customerID + "'";
   return _orders;
}
//同上,不带参数
protected DataView getOrdersDataSource1()
{
   DataView _orders = ds.Tables["Orders"].DefaultView;
   _orders.RowFilter = "CustomerID='BSBEV'";
   return _orders;
}

//页面代码
<!-- 父控件 -->
<asp:DataGrid id="DataGrid1" runat="server">
   <Columns>
      <asp:TemplateColumn ItemStyle-VerticalAlign="Top" HeaderText="Orders" ItemStyle-Width="100%">
      <ItemTemplate>
         父控件
<%# DataBinder.Eval(Container.DataItem, "CustomerID") %>
         <!-- 子控件 -->
         
         <asp:DataGrid runat="server" AutogenerateColumns="False" Width="100%" DataSource='
<%# getOrdersDataSource1()
%>' ID="Datagrid2" NAME="Datagrid2">
            <Columns>
               <asp:BoundColumn DataField="OrderID" HeaderText="Order ID" /><asp:TemplateColumn>
               <ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "OrderDate", "子控件={0}" ) %></ItemTemplate>
               </asp:TemplateColumn>
            </Columns>
         </asp:DataGrid>
         <!-- 子控件 -->
     </ItemTemplate>
     </asp:TemplateColumn>
   </Columns>
</asp:DataGrid>
<!-- 父控件 -->

转载于:https://www.cnblogs.com/qinfei/archive/2005/11/03/268218.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值