我开发了一个usercontrol,但我似乎无法在详细信息视图中找到如何在usercontrol的属性上进行数据绑定。
该属性以这种方式定义:
<Bindable(True, BindingDirection.TwoWay)>
Public Property Value As String
Get
Return combobox.SelectedValue
End Get
Set(value As String)
combobox.SelectedValue = value
End Set
End Property
我的详细信息视图中的数据绑定以这种方式完成:
<myctls:DropDown runat="server"
ID="ctlSupplier"
Value='<%#Bind("supplier_id") %>' />
每当我尝试Databind时,我都会遇到以下异常:
数据绑定方法,如Eval(), 只能使用XPath()和Bind() 在数据绑定控件的上下文中。
任何人都有任何想法如何使数据绑定到用户控件的属性?
* 编辑1:添加了DetailsViewCode和对象数据源*
<asp:DetailsView runat="server" ID="dvMain" DataSourceID="odsReception" AutoGenerateRows="false" GridLines="None" DefaultMode="Edit">
<Fields>
<asp:TemplateField HeaderText="Supplier">
<ItemTemplate>
<myctls:DropDown runat="server" ID="ctlSupplier" Width="255" Value='<%#Bind("supplier_id") %>' />
</ItemTemplate>
</asp:TemplateField>
[... bunch of fields ...]
</Fields>
</asp:DetailsView>
<asp:ObjectDataSource runat="server" ID="odsReception" DeleteMethod="Delete"
InsertMethod="Insert" SelectMethod="Select"
TypeName="DataAccess.Reception"
UpdateMethod="Update">
<SelectParameters>
[... Bunch of parameters ...]
</SelectParameters>
[... Parameters for other methods ...]
</asp:ObjectDataSource>
答案 0 :(得分:1)
Protected Sub DetailsView1_DataBound(ByVal sender As Object, ByVal e As EventArgs) Handles DetailsView1.DataBound
Dim drv As DataRowView = CType(DetailsView1.DataItem,DataRowView)
Dim supplierId As String = CType(drv("supplier_id"),String)
Dim ctrl As MyUCControl = CType(DetailsView1.FindControl("ctlSupplier"),MyUCControl)
If (Not (ctrl) Is Nothing) Then
ctrl.Value = supplierId
End If
End Sub
“需要
Imports System.Data