Привязка данных к свойству UserControl в DetailsView - PullRequest
0 голосов
/ 31 марта 2011

Я разработал пользовательский контроль, но я не могу найти способ привязки данных к свойству пользовательского контроля в подробном представлении.

Свойство определяется следующим образом:

<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") %>' />

Всякий раз, когда я пытаюсь привязать данные, я получаю следующее исключение:

Методы привязки данных, такие как Eval (), XPath () и Bind () могут использоваться только в контексте элемента управления, связанного с данными.

Кто-нибудь получил какие-либо идеи о том, как сделать возможным привязку данных к свойству usercontrol?

* Редактировать 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>

1 Ответ

1 голос
/ 31 марта 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...