ASPX 页面中带有参数的数据源可在用户控件中移动
我有一个页面,其中包含一些数据源。我正在对页面本身进行重新设计,并希望将页面的某些部分拆分为多个用户控件。
在我的代码中,我有一个具有以下参数的 ObjectDataSource 对象
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
TypeName="DataSetTableAdapters.PhotosTableAdapter"
SelectMethod="GetPhotosForAlbum">
<SelectParameters>
<asp:ControlParameter Name="albumID" ControlID="txtAlbumID" Type="Int32"/>
</SelectParameters>
</asp:ObjectDataSource>
这段代码自动将隐藏字段“txtAlbumId”绑定到数据源。在我的修订中,该数据源应移至用户控件。
处理这种情况的最佳方法是什么?
问候, 洛伦佐
I have a page with some datasources in it. I am doing reenginering of the page itself and would like to split some parts of the page in several user controls.
In my code I have an ObjectDataSource object with the following params
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
TypeName="DataSetTableAdapters.PhotosTableAdapter"
SelectMethod="GetPhotosForAlbum">
<SelectParameters>
<asp:ControlParameter Name="albumID" ControlID="txtAlbumID" Type="Int32"/>
</SelectParameters>
</asp:ObjectDataSource>
This piece of code automatically bind the hidden field "txtAlbumId" to the datasource. In my revision this datasource should be moved to a user control.
What is the best way to handle a scenario like this?
Regards,
Lorenzo
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在用户控件上创建一个属性,以公开隐藏字段上的属性,如下所示:
然后您应该能够将对象数据源连接到用户控件:
编辑:
有几种方法反之亦然(即用户控件中的数据源)。一种方法是可行的,但我发现会让设计者感到困惑,即将用户控件中的参数集合公开为公共属性:
这样做允许您从页面填充参数集合,如下所示:
如果您使用设计器,您的控件将始终显示错误,但它可以工作。 (请注意,我已将这种方法与查询字符串和会话参数一起使用。看看它是否能够在控制参数中幸存下来会很有趣。)
不过,我认为最简单的方法是交换
ControlParameter< /code> 为普通的旧
参数
,并通过属性公开默认值。然后,您可以将数据绑定或直接分配给控件的AlbumID 属性,并期望将值转发给参数。
You can create a property on the user control to expose the property on the hidden field like so:
You should then be able to wire the object data source to the user control:
Edit:
There are a few ways to go the other way around (i.e., data source in the user control). One approach is viable, but I find makes for some designer confusion, is to expose the parameter collection from the user control as a public property:
Doing so allows you to fill the parameter collection from the page like so:
If you use a designer, your control will always display an error, but it works. (Note, that I've used this approach with query string and session parameters. It would be interesting to see if it will survive control parameters.)
I think, though, that the easiest method is to swap out your
ControlParameter
for a plain oldParameter
, and expose the default value through a property.You can then data bind or assign directly to the AlbumID property of the control, and expect the value to be forwarded to the parameter.
另一种选择是以编程方式进行。
Another option would be to just do it programatically.