我希望您在使用c#。
的ASP.NET中一起使用Repeater,Table和UpdatePanel我需要什么?我有类别和itens(有重量),用户需要为该项目设置等级。在CodeBehinde,我将权重与等级相加,我得到了一个结果。
我的问题是什么?我可以正确地获得一个返回值(值)但它仍然在我的表之外(与Repeater一起使用)。
我搜索了很多解决方案,但没有任何工作。我希望任何人都可以帮助我。
谢谢。
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));
}
最后,calc可以工作,但它不会替换原始字段。它会在顶部的posicion页面上添加新字段。
提前感谢您的关注。