簡體   English   中英

Datalist_ItemCommand事件未觸發

[英]Datalist_ItemCommand event not firing

我有一個包含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,因此事件處理程序不會觸發。 所以為了修復它為null,我嘗試覆蓋init

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        DataList1.DataSource = mySessionSource;
    }

現在,我知道它不起作用的原因是:1.在我添加Override方法之前,我的數據源為null; 2.由於重新綁定每個回發,因此沒有及時創建我的Controls事件處理程序。

要修復1,我添加了一個數據源。 要修復2,我在init中添加了一個數據源。

但是,這似乎沒有解決任何問題,我也不知道為什么。 我還嘗試在init中添加一個event_handler,但它沒有執行任何操作。

確保將數據源綁定到DataList1否則DataList始終為空,並且OnItemCreated事件將永遠不會觸發。 您不需要OnInit覆蓋。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM