Как отменить привязку ObjectDataSource? - PullRequest
1 голос
/ 24 марта 2010

CheckPara - это моя процедура OnDataBinding

SqlDataSource1 - ObjectDataSource (это только запутанное имя)

Язык - это Nemerle, но если вы знаете C #, вы можете легко его прочитать

  protected virtual CheckPara(_ : object,  _ : System.EventArgs) : void
      {
        foreach(x is Parameter in SqlDataSource1.SelectParameters)
            when(x.DefaultValue=="") //Cancel binding
      }

так, как я могу отменить привязку, когда не полностью сконфигурированный ObjectDataSource?

Или ... как я могу запустить связывание, только когда я сделал со всеми параметрами?

Ответы [ 2 ]

3 голосов
/ 24 марта 2010

Используйте событие выбора ObjectDataSource, поместите цикл for для выбора и, если вы хотите отменить его привязку, используйте e.Cacnel = true, и все готово!

1 голос
/ 24 марта 2010

ASP.NET не связывается по умолчанию. Вы должны позвонить DataBind. Вызов Page.DataBind вызовет метод DataBind всех элементов управления. Поэтому просто позвоните вашему контролю DataBind, когда будете готовы. Я обычно не звоню Page.DataBind при использовании ObjectDataSource.

Если вы объявили ObjectDataSource на своей странице веб-формы (aspx), то метод DataBind элемента управления вызывается сразу после события Page.Load и до события Load элемента управления. События ObjectCreating и ObjectCreated могут вам помочь. Ниже приведен пример, который устанавливает строку подключения бизнес-объекта.


<asp:ObjectDataSource 
    ID="__definitionCategoryDataSource" 
    runat="server" 
    OldValuesParameterFormatString="original_{0}" 
    SelectMethod="GetData" 
    TypeName="Missico.Data.DefinitionDataSetTableAdapters.DefinitionCategoryTableAdapter">
</asp:ObjectDataSource>

Protected Sub __definitionCategoryDataSource_ObjectCreated( _
    ByVal sender As Object, _
    ByVal e As System.Web.UI.WebControls.ObjectDataSourceEventArgs) _
    Handles __definitionCategoryDataSource.ObjectCreated

    If e.ObjectInstance IsNot Nothing Then
        SetObjectDataSourceConnectionString(e.ObjectInstance, DataManager.ConnectionString)
    End If

End Sub

Public Sub SetObjectDataSourceConnectionString( _
    ByVal objectInstance As Object, _
    ByVal connectionString As String)

    If objectInstance IsNot Nothing Then

        Dim oConnection As System.Data.Common.DbConnection

        oConnection = objectInstance.GetType.GetProperty("Connection").GetValue(objectInstance, Nothing)
        oConnection.ConnectionString = DataManager.ConnectionString

    End If

End Sub
...