2013-08-23 3 views
0

У меня есть простой webcontrol.ascx со списком и 2 целыми полями (show nbr. Of some elements). Listview заполняется из asp: ObjectDataSource.Доступ к другим asp: Элементы управления asp: ObjectDataSource-SelectMethod

Моя проблема заключается в том, что как для списка, так и для моих двух целых значений требуется доступ к одной и той же таблице базы данных, и я действительно не хочу дважды выполнять этот вызов (внутри поля Page_Load для 2-х полей и внутри SelectMethod для объекта ObjectDataSource)

Проблема в том, что я не вижу простой способ для двух методов (Page_Load и SelectMethod) для обмена любыми данными (например, с локальными свойствами).

private mydata As List(of ...) 

protected Sub Page_Load(...) Handles Me.Load 
    mydata = DbManager.HeavyCall(...) 
    literalValueA.Text = (From i in mydata .....).Count 
    literalValueB.Text = (From i in mydata ..Where ...).Count 
End Sub 

' SelectMethod for asp:ObjectDataSource 
public Function GetData(...) As List(of ...) 

    mydata.DoSomething(...) ' mydata is Nothing here... 

end Function 

Я надеюсь, что кто-то может сказать мне хорошее решение (желательно без внешнего кэша ..) как для обмена данных между этими двумя методами ..

ответ

1

Печальным решением: Dont использовать жерех: ObjectDataSource ...

Теперь Im используя жерех: LinqDataSource которым обеспечивает «selecting'-событие, с которого я могу изменить элементы управления на моем веб-интерфейсе.

' Selecting-Event from my LinqDataSource 
private Sub myLinqDataSource_Selecting(sender .., e ..) Handles myLinq..Selecting 

    dim mydata = DbManager.HeavyCall(..) 
    literalValueA.Text = (From i in mydata .....).Count  ' works 
    literalValueB.Text = (From i in mydata ..Where ...).Count ' works 

    e.Result = mydata 

End Sub 
Смежные вопросы