状况是这样:
我在用DetailsView控件 显示字段内容的时候 使用了Repeater控件,结构是这样的:
<asp:DetailsView ID="dvEmployee" runat="server" AutoGenerateRows="False"> <asp:TemplateField HeaderText="Manager" > <EditItemTemplate> <asp:Repeater ID="rptManagerList" EnableViewState="true" runat="server"> <ItemTemplate> <asp:Label ID="lblManager" CssClass="labelitem" runat="server" Text='<%#Eval("LabelText") %>'></asp:Label> </ItemTemplate> </asp:Repeater> </EditItemTemplate> </asp:TemplateField> </asp:DetailsView>
1.比如我选择一个项目进行 [编辑],弹出一个窗口,然后绑定数据到 DetailsView上时,
在后台代码给 rptManagerList 绑定数据源.按理来说 rptManagerList的视图会随着
我绑定的数据源条目进行渲染然后显示. 但是 结果rptManagerList 没有显示任何条目!
2.然后 我再次点击 [编辑],后台执行逻辑跟第一步骤一样,然后 rptManagerList 数据
竟然显示出来了,而且 每次我进行编辑都是这样,都需要点击两次 [编辑] rptManagerList
中的数据才显示! 这个就是我 困惑的地方???
protected void DisplaySelectedManagers() { Repeater rptManagerList = dvEmployee.FindControl("rptManagerList") as Repeater; rptManagerList.DataSource = SelectedManagers; rptManagerList.DataBind(); }
环境补充说明:
以上代码是包含在 UpdatePanel 中的.
编辑的时候是以Ajax形式的时候执行的.
大家帮忙解惑,我实在想不到为什么 第二次的时候才显示 Repeater中的数据,
就感觉想 第一次的时候绑定了数据,但是没有渲染,第二次点击[编辑]的时候,
第一次渲染的结果才输出来.这是否与 DetailsView有关系?因为要下班所以
没有能够独立出来写例子测试,请大家帮忙看看!
小弟在此谢过各位,预祝大家中秋快乐!