我的基本上是这样的:
<asp:datagrid id="DGrid" runat="server" AutoGenerateColumns="false">
<asp:TemplateColumn HeaderText="Stuff">
<ItemTemplate>
<asp:PlaceHolder id="PH" runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
</asp:datagrid>
我需要在PlaceHolder中添加一个Button,具体取决于我绑定的数据的值。目前,我在Page_Load中绑定数据后添加Button。问题是数据绑定方法没有在回发中调用,因此当我点击它时Button会消失。
有关如何执行此操作的任何建议?问题是我需要知道网格项的一些属性来创建Button,所以在绑定数据之前我无法创建它。
答案 0 :(得分:1)
订阅ItemCreated活动怎么样?
标记:
<asp:datagrid id="DGrid" runat="server" OnItemCreated="DGrid_ItemCreated" AutoGenerateColumns="false">...</asp:DataGrid>
代码隐藏:
protected void DGrid_ItemCreated(object sender, DataGridItemEventArgs e)
{
var ph e.Item.FindControl("PH") as PlaceHolder;
// ...
}
<强>更新强>
关于回传上e.Item.DataItem
为null
的情况:只有可靠信息(例如数据绑定控件属性)在回发之间保持不变(如果启用了ViewState),整个数据项不会他们活下来。因此,你必须自己管理国家。您只能在ViewState中保留必要的数据(而不是整个数据项,因为它可以将其炸毁)。