动态加载和数据绑定用户控件

时间:2015-08-24 16:16:28

标签: c# asp.net

条件:我创建了一个跟踪设备的经典网站,现在我将其转换为ASP.NET。我有一个页面,显示有关特定设备的信息以及我正在查看的设备类型的详细信息。设备类型的一个例子是汽车,船,计划和自行车。所有这些东西都有相同的信息,如制造商,型号,成本,购买日期等......但它们也有不同的细节,特定于它们的类型,但是,一些细节重叠。例如,汽车和自行车都有轮子,但船却没有。然而,汽车和船只有发动机,但自行车没有(如果我们遗漏了人类)。

当我打开特定项目的网页时,我希望显示该项目类型的详细信息并进行数据绑定,以便显示和编辑正常工作。我已经找到了很多方法来添加具体的细节,具体取决于所选择的类型,但是唯一允许我执行“数据绑定”的方法(类似于使用<%#Bind(“Horsepower”)%>的声明控件)。 )是创建用户控件,在页面上注册它,并以声明方式或动态地在占位符中添加用户控件。这些方法有效,控件是正确的数据绑定,将显示数据并允许更新(用户控件位于FormView中,这是绑定到SqlDataSource的数据)。

每种设备类型都有自己的详细信息用户控件,因此只显示该类型的详细信息。在数据库中,详细信息表有一个列,用于跟踪每个细节,无论其类型如何。例如,汽车和船的详细信息都将保存在详细信息表中,但显示轮胎尺寸的列将留空。

当我为所有不同的详细信息类型注册用户控件时,会出现问题。由于某些细节在类型之间重叠(即平面和汽车都有轮子)所有控件在页面加载时连接到SqlDataSource(无论何时发生数据绑定)我都有代码,只允许正确控制显示和查看网页的来源没有其他控件甚至在页面上有代码,可见或不可见。视觉上一切都很完美,更改类型显示正确的用户控件。但是,由于所有用户控件都已注册(使用<%@ Register%>指令),它们都会尝试连接到SqlDataSource,这意味着,我不知道,只有最后一个连接实际连接了?

如果我只声明/注册一个控件,一切正常。一旦我添加第二个控件与重叠数据列名称数据绑定似乎不起作用或仅适用于最后一个控件。我故意更改了数据绑定以删除重叠,这使得所有控件都能正常工作,但显然表格列没有被重复使用(即汽车和自行车都有轮子,因此轮子列将有两种类型的条目)。

我需要的是能够根据设备类型显示特定细节,并将这些细节数据转发回SqlDataSource以进行查看,更新和插入。我可以将用户控件添加到placholder没有问题,但数据绑定要么没有发生(根本没有),要么只有最后一个注册的控件具有正确的数据绑定。

我试图避免回到Classic ASP方法。必须有一个 ASP.NET解决方案。

谢谢,

0 个答案:

没有答案