Note that there are some explanatory texts on larger screens.

plurals
  1. POasp.net Repeater Button does not fire event on first page load but after postback it does
    primarykey
    data
    text
    <p>I have a strange problem with a Button within a Repeater</p> <p>when the site is loaded (Dotnetnuke settings page) the repeater is fully created and everything works except the buttons in the repeater. they do just nothing i have set in very line on the code a breakpoint to be sure it doesn't do anything. </p> <p>After an other Button(runs CreateButton) does a Postback (rebind of the repeater happens) they work as expected.</p> <p>here is my code:</p> <pre><code>&lt;asp:Repeater ID="rptForm" runat="server" EnableViewState="true" ItemType="ButtonObject" &gt; &lt;%--OnItemCommand="rpt_ItemCommand" OnItemDataBound="Repeater_ItemDataBound"--%&gt; &lt;HeaderTemplate&gt; &lt;table class="ButtonTable"&gt; &lt;tr class="ButtonTableHeader"&gt; &lt;td&gt;Id&lt;/td&gt; &lt;td&gt;Name&lt;/td&gt; &lt;td&gt;Link&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/HeaderTemplate&gt; &lt;ItemTemplate&gt; &lt;tr&gt; &lt;td&gt; &lt;%# Item.Id %&gt; &lt;/td&gt; &lt;td&gt; &lt;%# Item.Name %&gt; &lt;/td&gt; &lt;td&gt; &lt;%# Item.Link %&gt; &lt;/td&gt; &lt;td&gt; &lt;asp:Button ID="EditBtn" runat="server" Text="Editieren" data-ButtonId="&lt;%# Item.Id %&gt;" CssClass="uk-button uk-button-primary" OnClick="EditButton"/&gt; &lt;%--CommandName="edit" CommandArgument="&lt;%# Item.Id %&gt;" --%&gt; &lt;/td&gt; &lt;td&gt; &lt;asp:Button ID="DeleteBtn" runat="server" Text="Button Löschen" data-ButtonId="&lt;%# Item.Id %&gt;" CssClass="uk-button uk-button-primary" OnClick="DeleteButton"/&gt; &lt;%--CommandName="delete" CommandArgument="&lt;%# Item.Id %&gt;"--%&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;/table&gt; &lt;/FooterTemplate&gt; &lt;/asp:Repeater&gt; </code></pre> <p>and here is code behind:</p> <pre><code>private static ButtonSettings BtnSettings = new ButtonSettings(); protected void Page_Init(object sender, EventArgs e) { if (!IsPostBack) { BtnSettings = new ButtonSettings(); if (Settings.Contains("ButtonSettings")) { BtnSettings.BuildButtonSettings(Settings["ButtonSettings"].ToString()); } BindRepeater(); } } private void BindRepeater() { this.rptForm.DataSource = BtnSettings.Buttons; this.rptForm.DataBind(); } protected void rpt_ItemCommand(object sender, RepeaterCommandEventArgs e) { //This Method will not be executed first time when site loads if (e.CommandName == "edit") // add this { EditButtonDiv.Visible = true; } } protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item) { Button button = (Button)e.Item.FindControl("DeleteBtn"); if (button != null) { button.Click += DeleteButton; } } } protected void DeleteButton(Object sender, EventArgs e) { //This Method will not be executed first time when site loads Button button = sender as Button; var buttonID = Convert.ToInt32(button.Attributes["data-ButtonId"].ToString()); BtnSettings.RemoveButton(buttonID); BindRepeater(); } protected void EditButton(Object sender, EventArgs e) { //This Method will not be executed first time when site loads /* TODO:: Get ButtonId - Set values */ EditButtonDiv.Visible = true; } protected void CreateButton(Object sender, EventArgs e) { var buttonObj = new ButtonObject(); ... BindRepeater(); ScriptManager.RegisterStartupScript(Page, this.GetType(), "script", "ReRegisterDivEvents()", true); ScriptManager.RegisterStartupScript(Page, this.GetType(), "script", "ClearForm()", true); } </code></pre> <p>Where i'm doing a mistake?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload