我有一个相当简单的表格:
<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;
}
}