Datalist_ItemCommand事件未触发

时间:2014-02-19 20:01:36

标签: c# event-handling

我有一个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,它没有做任何事情。

1 个答案:

答案 0 :(得分:0)

确保将数据源绑定到DataList1,否则DataList将始终为空,OnItemCreated事件将永远不会触发。您不应该需要OnInit覆盖。

protected void Page_Load(object sender, EventArgs e)
{
     if (!IsPostBack)
     {
         DataList1.DataSource = mySource;
         DataList1.DataBind();
     }
}