Comment annuler la liaison ObjectDataSource?
-
22-09-2019 - |
Question
CheckPara est ma procédure de OnDataBinding
SqlDataSource1 est ObjectDataSource (il est seulement le nom de confusion)
La langue est Nemerle, mais si vous connaissez le C #, vous pouvez le lire facilement
protected virtual CheckPara(_ : object, _ : System.EventArgs) : void
{
foreach(x is Parameter in SqlDataSource1.SelectParameters)
when(x.DefaultValue=="") //Cancel binding
}
Alors, comment puis-je annuler la liaison quand il n'y a pas entièrement configuré ObjectDataSource?
Ou ... Comment puis-je utiliser la liaison seulement quand je fait avec tous les paramètres?
La solution
Utilisez l'événement Sélection de ObjectDataSource, placez votre boucle de sélection et si vous souhaitez annuler le liant, utilisez e.Cacnel = true et vous avez terminé !!
Autres conseils
ASP.NET ne se lie pas par défaut. Vous devez appeler DataBind
. L'appel Page.DataBind
appellera la méthode de DataBind
de tout contrôle. Par conséquent, il suffit d'appeler le DataBind
de votre commande lorsque vous êtes prêt. Je n'appelle généralement pas Page.DataBind
lorsque vous utilisez un ObjectDataSource
.
Si vous avez déclaré un ObjectDataSource
dans votre formulaire Web (ASPX) page, puis la méthode DataBind
du contrôle est appelé immédiatement après l'événement Page.Load
et avant l'événement Load
du contrôle. Les événements ObjectCreating
et ObjectCreated
peut être utile pour vous. Voici un exemple qui définit la chaîne de connexion de l'objet métier.
<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