【问题标题】:How to cancel binding ObjectDataSource?如何取消绑定 ObjectDataSource?
【发布时间】:2010-03-24 06:44:25
【问题描述】:

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 时如何取消绑定呢?

或者...只有在完成所有参数后才能运行绑定?

【问题讨论】:

    标签: c# asp.net objectdatasource nemerle


    【解决方案1】:

    使用 ObjectDataSource 的 Selecting 事件,放置 select 的 for 循环,如果要取消绑定,使用 e.Cacnel = true 即可完成!

    【讨论】:

      【解决方案2】:

      默认情况下,ASP.NET 不绑定。您必须致电DataBind。调用Page.DataBind 将调用所有控件的DataBind 方法。因此,准备好后只需调用控件的DataBind。使用ObjectDataSource 时,我通常不调用Page.DataBind

      如果您在 Web 窗体 (aspx) 页面中声明了 ObjectDataSource,则在 Page.Load 事件之后和控件的 Load 事件之前立即调用控件的 DataBind 方法。 ObjectCreatingObjectCreated 事件可能对您有所帮助。以下是设置业务对象连接字符串的示例。


      <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
      

      【讨论】:

      • 它默认为我绑定 :-/ 。 . .我的 Page_Load 上没有 Bind 方法……只设置了一些参数。找不到绑定的地方...
      • 啊,我想起来了。您是否在 aspx 文件中声明了 ObjectDataSource?如果是这样,它的数据绑定在...。处理 ObjectCreating 事件会对您有所帮助。
      • 啊,我想起来了。您是否在 aspx 文件中声明了 ObjectDataSource?如果是这样,它会在 Page.Load 事件之后和 Control.Load 事件之前立即绑定数据。处理 ObjectCreating 事件会对您有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 2012-01-11
      相关资源
      最近更新 更多