Repeater, Table and Updatepanel - Not Working Correctly (ASP.NET)

Asked

Viewed 83 times

0

I would like your help with Repeater, Table and Updatepanel together on ASP.NET using c #.

What do I need? I have category and items (with weight) and the user needs to set a note for that item. In Codebehinde I sum weight with note and I have a result.

What is my problem? I can get a return correctly (values), but it is getting out of my Table (which work with Repeater).

I looked for a lot of solution, but nothing is working. I hope someone can help me.

Thank you.

ASPX:

 <asp:ScriptManager ID="SM1" runat="server" EnablePartialRendering="true"> </asp:ScriptManager>
            <asp:Repeater ID="RepeaterItem" runat="server" OnItemDataBound="RepeaterItem_ItemDataBound" 
                            OnItemCommand="RepeaterItem_ItemCommand" 
                            onitemcreated="RepeaterItem_ItemCreated" >
                <HeaderTemplate>
                <table class="table table-condensed" style="border-collapse:collapse; font-size:14px">
                        <thead>
                        </thead>
                </HeaderTemplate>

                <ItemTemplate>
                    <tbody class="border border-0">
                        <tr> 
                            <td class="col-1 border border-primary"> <asp:Label  ID="LabelId" runat="server" Text=""></asp:Label> </td>                                
                            <td class="col-2 border border-primary text-center"> <asp:Label  ID="LabelNome" runat="server" Text=""></asp:Label> </td>
                            <td class="col-1 border border-primary text-center"> <asp:Label  ID="LabelValor" runat="server" Text=""></asp:Label> </td>
                            <td class="col-1 border border-primary text-center"> <asp:TextBox CssClass="form-control"  AutoPostBack="true" ID="textFunc" OnTextChanged="textFunc_OnTextChanged" runat="server" type="number" Text="" value="5" min="0" max="5" maxlength="1"></asp:TextBox> </td>

                   <asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" >        
                        <ContentTemplate>
                            <td > <asp:Label ID="LabelResultadoFinal" runat="server" Text="."></asp:Label></td>            
                        </ContentTemplate>
                         <Triggers>
                <asp:AsyncPostBackTrigger ControlID="textFunc" EventName="TextChanged"/>
             </Triggers>
                    </asp:UpdatePanel>     
                            <td class="col-1 border border-primary text-center"> <input  type="button" id="testButton" data-target='<%#"#accordion" + DataBinder.Eval(Container.DataItem,"ID") %>' data-toggle="collapse" value="+"></input></td>
                        </tr>
                        <tr>
                            <td colspan="5" class="hiddenRow">
                                <div class="accordian-body collapse" id="accordion<%# DataBinder.Eval(Container.DataItem, "Id")%>">   
                                    <textarea class="form-control mt-2 mb-2 col-8" id="Textarea<%# DataBinder.Eval(Container.DataItem, "Id")%>" rows="3"></textarea>
                                </div>
                            </td>
                        </tr>
                    </tbody>

                </ItemTemplate>
                <FooterTemplate>
                </table>
                </FooterTemplate>
            </asp:Repeater>

C#:

 ToolBOX.BLL.Relatorio.RelatorioLigacaoBO relatorioSelecionado;     
 protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            relatorioSelecionado = new ToolBOX.BLL.Relatorio.RelatorioLigacaoBO();
             RepeaterItem.DataSource = relatorioSelecionado.ObterItensPorCategoria(1);
            RepeaterItem.DataBind();

       }

 protected void RepeaterItem_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            ClassAuditoriaItem Item = (ClassAuditoriaItem)e.Item.DataItem;


            Label LabelId = (Label)e.Item.FindControl("LabelId");
            Label LabelNome = (Label)e.Item.FindControl("LabelNome");
            Label LabelValor = (Label)e.Item.FindControl("LabelValor");
            System.Web.UI.HtmlControls.HtmlInputText tx1 = (System.Web.UI.HtmlControls.HtmlInputText)e.Item.FindControl("text1");


            LabelId.Text = Item.Id.ToString();
            LabelNome.Text = Item.Nome;
            LabelValor.Text = Item.Valor.ToString();

        }
    }

 protected void textFunc_OnTextChanged(object sender, EventArgs e)
    {
        TextBox TextBoxNota = ((TextBox)(sender));

        RepeaterItem rp1 = ((RepeaterItem)(TextBoxNota.NamingContainer));


        Label LabelValor = (Label)rp1.FindControl("LabelValor");
        Label LabelResultadoFinal = (Label)rp1.FindControl("LabelResultadoFinal");

        LabelResultadoFinal.Text =  Convert.ToString((Convert.ToDouble(LabelValor.Text) / 5) * Convert.ToDouble(TextBoxNota.Text));



    }

At the end, the calculation works but is not replacing the original fields. It adds new fields on the top position page.

Here what is heppening

Thanks in advance for all your help.

  • You generated 6 columns (td) in the first line of tbody, but then in the second row, make a column with colspan="5", shouldn’t be colspan="6"?

  • Hello, you’re right. I fixed that, but the problem keeps happening. The data is updated correctly, according to Codebehind, but new data is created on the screen. I thank you for your contribution.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.