2009-03-23 4 views
0

Я использую DotNetNuke 4.9.2 и нахожусь в нечетной проблеме.DotNetNuke ObjectDataSource.SelectMethod не сохраняется в viewstate

У меня есть MultiView в модуле, который я разрабатываю, и в одном из представлений есть GridView, привязанный к объекту ObjectDataSource.

В отдельном представлении у меня есть несколько кнопок, которые будут переключать SelectMethod объекта ObjectDataSource во втором представлении, а затем установить этот вид активным. Все работает отлично, пока сетка не будет сортироваться по второму виду, что вызывает обратную передачу, и ODS каким-то образом подбирает свой оригинальный метод SelectMethod. SelectParameters, которые назначаются одновременно в патче кода.

Мне кажется, что ObjectDataSource должен помнить SelectMethod в viewstate, не так ли?

<asp:ObjectDataSource runat="server" ID="MyObjectDataSource" SelectMethod="MyFirstSelectMethod" TypeName="Whatever"></asp:ObjectDataSource> 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    MyObjectDataSource.SelectMethod = "MyNewMethod"; 
    // more code here to change the parameters as well... 
    MyMultiView.SetActiveView(MyView2); 
} 

Когда я запустил эту кнопку, сетка отображается, как ожидалось. Когда я нажимаю на один из заголовков столбцов для GridView и ломаю нагрузку на страницу для проверки SelectMethod, он возвращается к объявлению, указанному в разметке.

Любые предложения относительно того, что моя проблема может быть здесь?

+0

Я не слишком хорошо знаком с MultiView ... является объектом ObjectDataSource внутри одного из представлений? Остается ли проблема, если вы полностью выберете MultiView из уравнения? – Bryan

+0

Я пытался переместить ODS за пределы мультивиза - все равно не повезло. В прошлом это хорошо работало в стандартном asp.net - так что я предполагаю, что что-то в ядерном оружии вмешивается. –

ответ

0

Я закончил работать вокруг проблемы, просто используя свойство страницы, чтобы держать selectmethod, а затем сбросить его на каждом постбэка ...

protected string MySelectMethod 
{ 
    get 
    { 
     return (string)ViewState["MySelectMethod"] ?? MySearchResultsDataSource.SelectMethod; 
    } 
    set 
    { 
     ViewState["MySelectMethod"] = value; 

     MySearchResultsDataSource.SelectMethod = value; 

    } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (IsPostBack) 
    { 
     MySearchResultsDataSource.SelectMethod = MySelectMethod; 
    } 
} 

protected void MyButton_Click(object sender, EventArgs e) 
{ 
    MySelectMethod = "MyNewMethod"; 
} 

До сих пор не уверен, почему это SelectMethod опора не прилипает на обратной передаче в ядерном оружии. Я уверен, что это работало отлично для меня в прямых проектах asp.net в прошлом ...

0

Я предполагаю, что вы не уверены, что вы не перезагружаетесь. Выберите способ, когда страница перезагружается?

+0

Да - я расчесывал каждую строку кода хотя бы десяток раз. Разочарование. –

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

  • Нет связанных вопросов^_^