Как отменить привязку ObjectDataSource?
-
22-09-2019 - |
Вопрос
CheckPara - это моя процедура привязки к данным
SqlDataSource1 - это ObjectDataSource (это только сбивающее с толку название)
Язык немерянный, но если вы знаете C #, вы сможете легко его прочитать
protected virtual CheckPara(_ : object, _ : System.EventArgs) : void
{
foreach(x is Parameter in SqlDataSource1.SelectParameters)
when(x.DefaultValue=="") //Cancel binding
}
итак, как я могу отменить привязку, если нет полностью сконфигурированного ObjectDataSource?
Или...как я могу запустить привязку только после того, как я выполнил все параметры?
Решение
Используйте событие Selecting ObjectDataSource, поместите цикл for select, и если вы хотите отменить его привязку, используйте e.Cacnel = true, и все готово!
Другие советы
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