将ASP.NET中继器控件集成到当前页面

将ASP.NET中继器控件集成到当前页面,.net,asp.net,vb.net,.net,Asp.net,Vb.net,因此,我目前有一个aspx页面,显示任何一名员工的详细信息,该页面主要使用ASP标签进行设置。我有一个名为“getstaffdata”的子例程,它在加载时填充页面(通过子例程) 我想将此转换为一个页面,显示一个或多个工作人员的详细信息,一个接一个。所以我考虑使用repeater控件,但我不确定如何转换页面。人员用户标识通过查询字符串传递,但我只是对如何为repeater控件创建数据源感到困惑 如有任何意见,将不胜感激 数据源可以是任何类型的集合、数组、数据表或类似类型。只需设置引用(repeat

因此,我目前有一个aspx页面,显示任何一名员工的详细信息,该页面主要使用ASP标签进行设置。我有一个名为“getstaffdata”的子例程,它在加载时填充页面(通过子例程)

我想将此转换为一个页面,显示一个或多个工作人员的详细信息,一个接一个。所以我考虑使用repeater控件,但我不确定如何转换页面。人员用户标识通过查询字符串传递,但我只是对如何为repeater控件创建数据源感到困惑


如有任何意见,将不胜感激

数据源可以是任何类型的集合、数组、数据表或类似类型。只需设置引用(repeater.DataSource=someCollection;)和绑定(repeater.DataBind())。所以,从Linq2Sql、EF、数据集/表格适配器、DataReader获取您的集合。。。只要确保它在任何集合对象类型中。中继器足够智能,可以使用其中的对象。

您可以使用简单的内部转发器项模板访问每个对象的属性(值)。

数据源可以是任何类型的集合、数组、数据表或类似对象。只需设置引用(repeater.DataSource=someCollection;)和绑定(repeater.DataBind())。所以,从Linq2Sql、EF、数据集/表格适配器、DataReader获取您的集合。。。只要确保它在任何集合对象类型中。中继器足够智能,可以使用其中的对象。
您可以使用简单的内部转发器项目模板访问每个对象的属性(值)。

基本轮廓:

1) 在原始标记周围放置一个转发器:

<asp:Repeater ID="myRepeater" runat="server">
    <ItemTemplate>
        [your original markup]
    </ItemTemplate>
</asp:Repeater>
4) 现在在中继器的ItemDataBound事件中绑定ItemTemplate内的控件。要记住两件重要的事情:现在必须使用FindControl获得控件的句柄,并且在绑定页眉和页脚项时,控件将不存在

myRepater_ItemDataBound(...)
{
     if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
        Label myLabel = e.Item.FindControl("myLabel");
        myLabel.Text = //whatever
    }
}
基本纲要:

1) 在原始标记周围放置一个转发器:

<asp:Repeater ID="myRepeater" runat="server">
    <ItemTemplate>
        [your original markup]
    </ItemTemplate>
</asp:Repeater>
4) 现在在中继器的ItemDataBound事件中绑定ItemTemplate内的控件。要记住两件重要的事情:现在必须使用FindControl获得控件的句柄,并且在绑定页眉和页脚项时,控件将不存在

myRepater_ItemDataBound(...)
{
     if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
        Label myLabel = e.Item.FindControl("myLabel");
        myLabel.Text = //whatever
    }
}

我想你会:

  • 顶部有一个中继器,用于显示员工姓名和ID的列表。通过复选框或其他控件选择行将填充:
  • 另一个中继器在底部。这将显示在第一个中继器中选择的人员的详细信息
例如。 顶部中继器

ID|名称
[十] 1 |约翰·多伊
[]2 |简平原
[十] 3 |玛丽相反
[]4 |詹姆斯·布朗

[X]
顺便说一句,是一个选中的复选框。让我回到ASCII艺术的时代;-)

底部中继器

NameDoBAddressTel
约翰·多伊24/12/197079a死胡同,沃里克埃文莫特1789 999 6669
玛丽街5/3/198223号伦敦市相反街0207 1234 5678

您将需要两个Sql查询或存储过程。您需要修改当前驱动页面的内容,并创建或重新使用另一个内容

现有查询类似于:

SELECT*FROM Staff,其中StaffID=x
-x可能是通过查询字符串传递到页面的内容

您需要修改此项以匹配多个员工ID。我建议使用quick n dirty方法传入一个CSV ID列表,例如
'1,4,8'
内部联接
将您的
员工
表转换为CSV的表表示形式。SQL Server具有方便的
dbo.Split
功能。大多数关系型数据库中都存在类似的情况

您需要创建的一个将只返回按字母顺序排列的ID和员工姓名列表

例如

按姓氏从员工订单中选择ID,Forename+“”+姓氏,Forename

您将
Bind
您的顶级中继器(首先,稍后您可以绑定到一组对象)一个由查询填充的
DataTable

在此转发器中,用户将选择要查看详细信息的行,然后单击“查看详细信息”类型按钮

单击此按钮时,它将触发一个事件,该事件将在中继器的行(
RepeaterItems
)中循环,并记录(作为CSV)所选行的ID(您可以将其存储在该行的控件/元素中)

然后,它将对修改后的查询进行数据库调用,并将CSV ID与之一起传递

然后将详细信息中继器绑定到第二个数据

在谷歌上搜索一下,所有的空白都会被填满;-)


HTH

我想你应该:

  • 顶部有一个中继器,用于显示员工姓名和ID的列表。通过复选框或其他控件选择行将填充:
  • 另一个中继器在底部。这将显示在第一个中继器中选择的人员的详细信息
例如。 顶部中继器

ID|名称
[十] 1 |约翰·多伊
[]2 |简平原
[十] 3 |玛丽相反
[]4 |詹姆斯·布朗

[X]
顺便说一句,是一个选中的复选框。让我回到ASCII艺术的时代;-)

底部中继器

NameDoBAddressTel
约翰·多伊24/12/197079a死胡同,沃里克埃文莫特1789 999 6669
玛丽街5/3/198223号伦敦市相反街0207 1234 5678

您将需要两个Sql查询或存储过程。您需要修改当前驱动页面的内容,并创建或重新使用另一个内容

现有查询类似于:

SELECT*FROM Staff,其中StaffID=x
-x可能是通过查询字符串传递到页面的内容

您需要修改此项以匹配多个员工ID。我建议使用quick n dirty方法传递CSV ID列表,例如
'