Обработчик событий не может быть запущен в приложении ASP.NET

1

Вот TextBox и обработчик событий:

<asp:Repeater ID="rpt_users" runat="server" OnItemCommand="rpt_users_ItemCommand" OnItemDataBound="rpt_users_ItemDataBound"><ItemTemplate>
        <tr class="c0">
            <td>
                <asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "daysleft") %>' OnTextChanged="Unnamed_TextChanged" AutoPostBack="true"/>
            </td>
        </tr>
    </ItemTemplate></asp:Repeater>

protected void Unnamed_TextChanged(object sender, EventArgs e)
{
    var repeaterItem = (sender as TextBox).NamingContainer as RepeaterItem;
    var hiddenFieldKey = repeaterItem.FindControl("LoginField") as HiddenField;
    DataTable data = ViewState["Data"] as DataTable;
    var dataRow = data.Rows.Find(hiddenFieldKey.Value);
    var userName = (dataRow[0].ToString()).Replace("'", "''");
    ... //more actions below
}

Этот обработчик событий не может быть запущен сейчас. Он работал отлично иногда, но недавно я удалил обработчик события Page_Init из кода и заменил его обработчиком событий Page_Load. Могут ли быть связаны эти факты? Какие условия должны быть выполнены, чтобы сделать этот обработчик доступным?

  • 0
    Я думаю, что TextChanged Event не работает в веб-приложениях, оно работает только с приложениями Windows Form ... Вы можете использовать JavaScript или jQuery для того же .....
  • 0
    Вы храните этот Texbox внутри элемента управления DataGrid или ListView или любого другого элемента управления привязкой данных? Вы можете разместить разметку?
Показать ещё 4 комментария
Теги:

1 ответ

1
Лучший ответ

Связывание данных ретранслятора должно быть внутри, а не является условием обратной передачи

public class Test
{
    public string daysleft { get; set; }
}

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindRepeaterItems();
        }
    }

    private void BindRepeaterItems()
    {
         var items = new List<Test>
         {
                new Test {daysleft = "Deepu"},
                new Test {daysleft = "Darsh"}
         };
         rpt_users.DataSource = items;
         rpt_users.DataBind();
    }

    protected void Unnamed_TextChanged(object sender, EventArgs e)
    {
        var repeaterItem = (sender as TextBox).NamingContainer as RepeaterItem;
        var hiddenFieldKey = repeaterItem.FindControl("LoginField") as HiddenField;
    }
}

<asp:Repeater ID="rpt_users" runat="server">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "daysleft") %>' OnTextChanged="Unnamed_TextChanged" AutoPostBack="true"/><br />
</ItemTemplate>
</asp:Repeater>
  • 0
    Это решило проблему с обработчиком, но вызвало еще одну проблему. Селектор страниц исчезает после каждой частичной обратной передачи. Например, я изменил значение в текстовом поле или выбрал вторую страницу в селекторе страниц, и селектор страниц исчезает.
  • 0
    если ваша первая проблема решена, можете ли вы разметить vout / answer, чтобы она была полезна другим :)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню