Datalist Itemcommand事件不起作用

本文关键字:不起作用 事件 Itemcommand Datalist | 更新日期: 2023-09-27 18:27:26

我正在尝试处理数据列表的itemcommand事件。我想使用数据列表中绑定的按钮。但是,当我在itemcommand事件上添加断点时,该事件不会运行。请告诉我为什么它不工作这里是数据列表源和我的代码

<asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" 
            onitemcommand="DataList1_ItemCommand1" >
        <ItemTemplate>
         <ul>
        <li>
    <a href="#"><asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("pictureurl") %>' Width="170px" Height="104px" /></a><br /><br />
        <asp:Label ID="Label1" runat="server" Text='<%#Eval("fullname") %>'></asp:Label><br />
                <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/images/Icons/accept1.png" CommandName="Accept"   />&nbsp;<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/images/Icons/decline.png"   />&nbsp;
        </li>
        </ul>
        </ItemTemplate>
        </asp:DataList>

代码:

  if (e.CommandName == "Accept")
        {
            string id = DataList1.DataKeys[e.Item.ItemIndex].ToString() ;
            SqlCommand CmdAcceptRequest = new SqlCommand("Update FriendRequest set requeststatus='Accept' where RequestFrom='" + id + "'", con);
            CmdAcceptRequest.CommandType = CommandType.Text;
            CmdAcceptRequest.ExecuteNonQuery();
            CmdAcceptRequest.Dispose();

         }

这个代码对我不起作用。项目命令事件不起作用请专家告诉我的错误位置

Datalist Itemcommand事件不起作用

我假设您在每次回发时都对DataList进行数据绑定。检查IsPostNack属性,例如:

protected void Page_Load(Object sender, EventArgs e)
{
    if(!IsPostBack)
    {
         DataBindDataList();
    }
}
private void DataBindDataList()
{
    var dataSource = getSource(); // some data
    DataList1.DataSource = dataSource;
    DataList1.DataBind();
}

否则,如果再次将Web数据绑定控件DataBind DataSource,则不会触发事件。这仅适用于手动数据绑定控件,而不适用于声明性数据源控件(如SqlDataSourceObjectDataSource)。