简体   繁体   中英

Event handler can't be triggered in ASP.NET app

Here are TextBox and is's event handler:

<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
}

This event handler can't be triggered now. It worked fine sometimes ago, but recently I deleted Page_Init event handler from code-behind and replace it with Page_Load event handler. Can these facts be connected? Which conditions should be complied to make this handler reachable?

Repeater data binding should be inside not is postback condition

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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM