Событие команды LinkButton, кажется, не стреляет

Диалоговый поток поддерживает SSML в текстовых ответах, которые поддерживают элемент . Это не говорит о том, какова максимальная продолжительность перерыва, но я сомневаюсь, что это будет больше, чем несколько секунд.

6
задан Ben Collins 9 April 2009 в 20:29
поделиться

1 ответ

Вот решение. Я проверил это в тестовом проекте, и он работает:

ASCX:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestControl.ascx.cs" Inherits="WebApplication1.TestControl" %>
<%@ Import Namespace="System.ComponentModel"%>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<cc1:Accordion ID="Accordion1" runat="server" Enabled="True">

    <Panes></Panes>
    <HeaderTemplate>
        <div><asp:Label runat="server" ID="HeaderLabel"><%# Container.DataItem %></asp:Label></div>
    </HeaderTemplate>
    <ContentTemplate>
        <div>
            <asp:TextBox ID="textBox" Text='<%# Container.DataItem %>' runat="server"></asp:TextBox>
            <asp:LinkButton ID="LinkButton1" Text="Update" CommandName="Update" CommandArgument='<%# Container.DataItem %>' 
            OnCommand="LinkButton_Command" runat="server"></asp:LinkButton>
        </div>
    </ContentTemplate>

</cc1:Accordion>

Codebehind:

public partial class TestControl : System.Web.UI.UserControl
{
    protected void Page_Init(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Accordion1.DataSource = new string[] {"one", "two", "three"};
            Accordion1.DataBind();
        }
    }

    protected void LinkButton_Command(object sender, CommandEventArgs e)
    {
        if (e.CommandName == "Update")
        {
            TextBox value = ((LinkButton)sender).Parent.FindControl("textBox") as TextBox;
            (Accordion1.Panes[Accordion1.SelectedIndex].Controls[0].Controls[1] as Label).Text = value.Text;
        }
    }
}

Похоже, что в Databinding the Accordion есть некоторые проблемы, которые запутывают работу ваших обработчиков событий. Повторно связывать его каждый раз, когда их как-то сбрасывают.

Кроме того, ваш опубликованный код имеет функцию DataBind (), вызываемую в методе LinkButton_Command, которая происходит после загрузки viewstate. Это приведет к тому, что обновленные данные не будут отображаться до следующей обратной передачи, поскольку новые привязки не будут сохранены в ViewState. Это будет действовать так, как будто он всегда позади.

3
ответ дан 17 December 2019 в 18:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: