0

我有一个相当简单的表格:

<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; 
    }
}
4

2 回答 2

2

我通过恢复到自己的数据绑定所有内容并取消 LoginView 的古老方法来解决此问题。

于 2010-04-28T19:45:48.027 回答
1

好的,我不知道你这个时候是否需要帮助,但是你需要捕获的容器是de FormItem,这种情况下你不能这样做

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

对不起我的英语不好。

再见。

于 2011-06-09T03:57:36.247 回答