未针对DataList触发ItemCommand事件 [英] ItemCommand event not firing for DataList

查看:134
本文介绍了未针对DataList触发ItemCommand事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我继承了我正在测试的VB.Net应用程序,但ItemCommand事件没有触发...这是一个VB.Net 4.0应用程序.

I've inherited a VB.Net application that I'm testing and the ItemCommand event is not firing... It is a VB.Net 4.0 application.

我已经在网上搜索了此错误,然后双重检查了应用程序中的代码.

I've searched the web for this error and doubhle checked the code in the application.

我知道应该在page_load事件之后在回发上触发此事件.但是,当我单击ImageButton(强制执行回发并希望执行ItemCommand事件)时,Page.IsPostBack属性仍设置为FALSE,从而永远无法执行ItemCommand事件.我不知道为什么仍将此属性设置为FALSE.显然,我需要一种方法来指示该页面正在发生回发. ImageButton应该注意这一点,因为它具有runat ="server"标记.

I know this event is supposed to fire on a postback after the page_load event. However, when I click on the ImageButton (to force a postback and hopefully execute the ItemCommand event), the Page.IsPostBack property is still set to FALSE, thereby never being able to execute the ItemCommand event. I don't know why this property would still be set to FALSE. Evidently, I need a way to signify to the page that a postback is occurring. The ImageButton should take care of this since it has the runat="server" tag.

下面是代码段.有人可以告诉我我要执行Item命令需要做什么吗?我相信我上面所说的是正确的.我不知道为什么在页面加载后按下ImageButton仍将属性设置为FALSE.

Below are the code snippets. Can someone please inform me what I would need to do in order to fire the Item command? What I said above is true, I believe. I don't know why after the page loads and I press the ImageButton that the property would still be set to FALSE.

HTML

<asp:DataList ID="lstReferrals" runat="server" DataKeyField="ReferringAffiliateID"
    OnItemCommand="lstReferrals_ItemCommand" CellPadding="4" Summary="Referral Design Table"
    Width="800"><ItemTemplate>
        <tr class="small" bgcolor="#FFFFFF">
            <td>
                <asp:ImageButton ID="btnSelect" AlternateText="Select" ImageUrl='<%# NodeImage(1) %>'
                    CommandName="select" runat="server" />CODE BEHINDPrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load



'Put user code to initialize the page here
        If Not (Request.Params("ItemIndex") Is Nothing) Then
            itemIndex = Int32.Parse(Request.Params("ItemIndex"))
        Else
            itemIndex = Convert.ToInt32(Null.SetNull(itemIndex))
        End If


        If Not Page.IsPostBack Then
            LoadReferrals()

            If Not Null.IsNull(itemIndex) Then
                lstReferrals.SelectedIndex = itemIndex
                LoadReferrals()
            End If
        End If


    End Sub



Protected Sub lstReferrals_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles lstReferrals.ItemCommand

        Try
            errormessage.Visible = False
            ' Determine the command of the button (either "select" or "collapse")
            Dim command As String = CType(e.CommandSource, ImageButton).CommandName



            ' Update asp:datalist selection index depending upon the type of command
            ' and then rebind the asp:datalist with content
            Select Case command
                Case "collapse"
                    lstReferrals.SelectedIndex = -1
                    LoadReferrals()
                Case "select"
                    lstReferrals.SelectedIndex = e.Item.ItemIndex
                    LoadReferrals()

推荐答案

我需要在page_load方法中添加一个事件处理程序,以将OnItemCommand事件设置为触发:

I needed to add an event handler in the page_load method which would set the OnItemCommand event to fire:

lstProducts.ItemCommand += new DataListCommandEventHandler(lstProducts_ItemCommand);

在C#中,有时我会注意到aspx文件并不总是触发事件触发.例如,如果您具有OnItemCommand ="abc",则不必触发(无论出于何种原因).在这种情况下,您应强制asp.net在上述代码中添加事件处理程序.

In C#, I've noticed sometimes that the aspx file doesn't always trigger an event firing. For instance, if you have OnItemCommand="abc", it doesn't neccessarily fire (for whatever reason). If this is the case, you should force asp.net to add the event handler in the code behind as stated above.

这篇关于未针对DataList触发ItemCommand事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆