LoginView внутри элемента управления FormView не привязывает данные на PostBack - PullRequest
0 голосов
/ 20 апреля 2010

У меня довольно простая форма:

<asp:FormView>
    <EditItemTemplate>
        <asp:LoginView>
            <RoleGroups>
                <asp:RoleGroup roles="Blah">
                    <ContentTemplate>
                        <!-- Databound Controls using Bind/Eval -->
                    </ContentTemplate>
                </asp:RoleGroup>
            </RoleGroups>
        </asp:LoginView>

        <!-- Databound Controls -->
    </EditItemTemplate>
</asp:FormView>

<asp:LinqDataSource OnUpdating="MyDataSource_Updating" />

Я обрабатываю событие LinqDataSource OnUpdating и выполняю некоторую работу с некоторыми полями M: N. Это все работает.

Однако, как только обновление завершено (и я называю e.Cancel = true), элемент управления LoginView не связывает свои дочерние элементы с данными, поэтому они все пустые. Состояние просмотра FormView все еще в порядке, так как все остальные элементы управления вне LoginView выглядят нормально. Я даже обрабатываю событие FormView_DataBound, и Trace показывает, что FormView привязывается к данным при обратной передаче.

Почему тогда LoginView не сохраняет свой ViewState / привязанный к данным? Вот пример кода, показывающий поток:

protected void MyDataSource_Updating(object s, LinqDataSourceUpdateEventArgs e)
{
    try 
    {
        Controller.DoSomething(newData);
        // attempts to databind again here fail
        // frmView.DataBind();
        // MyDataSource.DataBind();
        // LoginView.DataBind();
    }
    catch { // blah }
    finally 
    { 
        e.Cancel = true; 
    }
}

Ответы [ 2 ]

2 голосов
/ 28 апреля 2010

Я исправил это, вернувшись к старому методу привязки данных ко всему сам и усиливая LoginView.

1 голос
/ 09 июня 2011

Хорошо, я не знаю, нужна ли вам помощь в это время, но уловитель, который вам нужно поймать, это de FormItem, в этом случае вы не можете сделать это

<%# DataBinder.Eval(((FormItem)Container.Parent).DataItem,"YOUR FIELD") %>

Извините за мой английский.

Bye.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...