我有一个datalist,它有一个永远不会触发的item_Command事件。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
DataList1.DataSource = mySource;
}
protected void DataList1_ItemCommand(object sender, DataListCommandEventArgs e)
{
//dostuff
}
<asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand"
OnItemCreated="DataList1_ItemCreate">
<ItemTemplate>
<table>
<tr>
<td>
<asp:Button ID="ButtonEditTask" runat="server" Width="60px" Text="Edit" CommandName="edit" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
当我进行回发时,我的数据源为空,因为我没有重新分配,因此我的事件处理程序不会触发。所以为了修复它为null,我尝试重写init
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
DataList1.DataSource = mySessionSource;
}
现在我知道它不起作用的原因是因为 1.在我添加Override方法之前,我的数据源为空 2.自从重新绑定每个回发后,我的控件事件处理程序没有及时创建。
要修复1,我添加了一个数据源。 为了修复2,我在init中添加了一个数据源。
然而,这似乎没有解决任何问题,我不知道为什么。我也尝试在我的init中添加一个event_handler,它没有做任何事情。
答案 0 :(得分:0)
确保将数据源绑定到DataList1
,否则DataList将始终为空,OnItemCreated
事件将永远不会触发。您不应该需要OnInit
覆盖。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataList1.DataSource = mySource;
DataList1.DataBind();
}
}