如何将asp.net中继器控件动态绑定到数据源 [英] How to dynamically bind asp.net repeater control to datasource

查看:154
本文介绍了如何将asp.net中继器控件动态绑定到数据源的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个页面,一个简单的下拉列表和中继器控件在page.on中继器控件绑定到datasource1它有3列。



现在我的要求是如果我选择option2,它应该绑定到包含4列的datasource2。

 < asp:Repeater ID =Repeater1runat =serverOnItemDataBound =Repeater1_ItemDataBound> 
< HeaderTemplate>
< tr>
< th align =left> Header1< / th>
< th align =left> Header3< / th>
< th align =left> Header2< / th>
< / tr>
< / HeaderTemplate>
< ItemTemplate>
< tr>
< td>
< asp:Label ID =Header1runat =server/>< / td>
< td>
< asp:Label ID =Header3runat =server/>< / td>
< td>
< asp:Label ID =Header2runat =server/>< / td>
< / tr>
< / ItemTemplate>



是否可以中继器动态绑定到异构数据源?我如何在运行时指定头模板和项目模板?这种情况可以通过一个中继器控制和多个异构数据源来实现吗?

解决方案

以下代码将帮助您。 p>

 < asp:Repeater ID =Repeater1runat =serverOnItemDataBound =Repeater1_ItemDataBound> 
< HeaderTemplate>
< tr class =>
< asp:Repeater ID =Header1runat =server>
< ItemTemplate>
< th align =left><%#Container.DataItem%>
< / th>
< / ItemTemplate>
< / asp:Repeater>
< / tr>
< / HeaderTemplate>
< ItemTemplate>
< tr class =>
< asp:Repeater ID =Item1runat =server>
< ItemTemplate>
< td><%#Container.DataItem%>
< / td>
< / ItemTemplate>
< / asp:Repeater>
< / tr>
< / ItemTemplate>
< / asp:Repeater>


protected void Repeater1_ItemDataBound(object sender,RepeaterItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Header)
{
Repeater headerRepeater = e.Item.FindControl(Header1)as Repeater;
headerRepeater.DataSource = dt.Columns;
headerRepeater.DataBind();
}

if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater columnRepeater = e.Item.FindControl(Item1)作为Repeater;
var row = e.Item.DataItem as System.Data.DataRowView;
columnRepeater.DataSource = row.Row.ItemArray;
columnRepeater.DataBind();
}
}

或以其他方式使用2个不同的用户控件。用户控件包含repeater1,第二个包含repeater2.Then将这些中继器添加到您的页面,后面的代码


I have a page with a simple dropdown and repeater control in page.on submit repeater control is bound to datasource1 which has 3 columns.

Now my requirement is if i select option2 , it should bind to datasource2 which contains 4 columns.

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<HeaderTemplate>
    <tr>
        <th align="left">Header1</th>
        <th align="left">Header3</th>
        <th align="left">Header2</th>
    </tr>
</HeaderTemplate>
<ItemTemplate>
    <tr>
        <td>
            <asp:Label ID="Header1" runat="server" /></td>
        <td>
            <asp:Label ID="Header3" runat="server" /></td>
        <td>
            <asp:Label ID="Header2" runat="server" /></td>
    </tr>
</ItemTemplate>

Is it possible for the same repeater to dynamically bind to heterogeneous data sources?How can i specify the header template and item templates at run- time? Can this scenario be implemented with just one repeater control and multiple heterogeneous data sources?

解决方案

Feels below code will help you .

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
    <HeaderTemplate>
        <tr class="">
            <asp:Repeater ID="Header1" runat="server">
                <ItemTemplate>
                    <th align="left"><%# Container.DataItem %>
                    </th>
                </ItemTemplate>
            </asp:Repeater>
        </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr class="">
            <asp:Repeater ID="Item1" runat="server">
                <ItemTemplate>
                    <td><%# Container.DataItem %>
                    </td>
                </ItemTemplate>
            </asp:Repeater>
        </tr>
    </ItemTemplate>
</asp:Repeater>


protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    {
        if (e.Item.ItemType == ListItemType.Header)
        {
            Repeater headerRepeater = e.Item.FindControl("Header1") as Repeater;
            headerRepeater.DataSource = dt.Columns;
            headerRepeater.DataBind();
        }

       if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater columnRepeater = e.Item.FindControl("Item1") as Repeater;
            var row = e.Item.DataItem as System.Data.DataRowView;
            columnRepeater.DataSource = row.Row.ItemArray;
            columnRepeater.DataBind();
        }
    }

or in other way using 2 different User control.First user control contain repeater1, second contain repeater2.Then dynamic add these repeaters to your page, at code behind

这篇关于如何将asp.net中继器控件动态绑定到数据源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆