Событие ItemCommand не запускается для DataList - PullRequest
0 голосов
/ 03 января 2012

Я унаследовал приложение VB.Net, которое я тестирую, и событие ItemCommand не запускается ... Это приложение VB.Net 4.0.

Я искал в Интернете этоОшибка и двойная проверка кода в приложении.

Я знаю, что это событие должно срабатывать при обратной передаче после события page_load.Однако, когда я нажимаю на ImageButton (чтобы вызвать обратную передачу и, надеюсь, выполнить событие ItemCommand), свойство Page.IsPostBack по-прежнему устанавливается в FALSE, таким образом, никогда не может выполнить событие ItemCommand.Я не знаю, почему это свойство все равно будет установлено в FALSE.Очевидно, мне нужен способ показать странице, что происходит обратная передача.ImageButton должен позаботиться об этом, поскольку он имеет тег runat = "server".

Ниже приведены фрагменты кода.Может кто-нибудь сообщить мне, что мне нужно сделать, чтобы запустить команду Item?То, что я сказал выше, правда, я верю.Я не знаю, почему после загрузки страницы и нажатия кнопки ImageButton для свойства все равно будет установлено значение 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()

1 Ответ

1 голос
/ 06 января 2012

Мне нужно было добавить обработчик события в метод page_load, который бы вызывал событие OnItemCommand:

lstProducts.ItemCommand += new DataListCommandEventHandler(lstProducts_ItemCommand);

В C # я иногда замечал, что файл aspx не всегда вызывает срабатывание события. Например, если у вас OnItemCommand = "abc", он не запускается (по какой-либо причине). Если это так, вы должны заставить asp.net добавить обработчик событий в коде, как указано выше.

...