我正在寻找一些例子而无法理解以下内容:
有一个gridview,其中itemtemplate是一个使用控件:
<asp:TemplateField>
<ItemTemplate>
<%# Eval("Title") %>
<uc:IdBox id="Idbox1" runat="server" TheID='<%# Eval("ID") %>' ShowHeader="True" />
</ItemTemplate>
</asp:TemplateField>
还有一个ObjectDataSource连接到gridview。
我的问题是为什么TheID='<%# Eval("ID") %>'
会调用此用户控制代码中覆盖的public override void DataBind()
?
我认为这个值的评估就像ObjectDataSource连接到gridview一样,这个TheID属性应该从ObjectDataSource获取值。
为什么需要调用用户控件的DataBind()?
更新
如果我使用不带属性的usercontrol:
<uc:IdBox id="Idbox1" runat="server" ShowHeader="True" />
不调用Databind()。
答案 0 :(得分:0)
有趣......您是明确绑定数据还是仅设置DataSourceID?当您使用ObjectDataSource时,ASP.NET会自动在内部调用DataBind。
以下MSDN文章可能有所帮助: