1

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

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

4

2 回答 2

3

使用 ObjectDataSource 的 Selecting 事件,放置你的 for 循环,如果你想取消绑定它,使用 e.Cacnel = true 就完成了!!

于 2010-03-24T11:27:53.007 回答
1

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

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


<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
于 2010-03-24T06:53:01.803 回答