2014-08-28 4 views
1

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

<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 событие не работает в веб-приложениях, он работает только с ОС Windows Form приложений ... Вы скорее можете использовать JavaScript или JQuery для то же ..... –

+0

Вы сохраняете этот Texbox внутри элемента управления DataGrid или ListView или любого другого элемента управления привязкой данных? Можете ли вы разместить разметку? –

+0

@AbhayPrince 'TextChanged' существует в веб-формах http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.textchanged%28v=vs.110%29.aspx. –

ответ

1

данных Repeater связывание должно быть внутри не постбэк состояние

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

Он решил проблему с обработчиком, но вызвал еще одну проблему. Это делает селектор страниц исчезающим после каждой частичной обратной передачи. Например, я изменил значение в текстовом поле или на выбранной второй странице в селекторе страниц, а селектор страниц исчез. – splash27

+0

если ваша первая проблема решена, можете ли вы пометить vout/answer, чтобы она была полезной для других :) –

+0

нормально, но что делать со вторым? – splash27

Смежные вопросы