-6ren">
gpt4 book ai didi

asp.net - 中继器中的复选框控件未保持状态

转载 作者:行者123 更新时间:2023-12-04 06:41:54 26 4
gpt4 key购买 nike

对此有点困惑。我的印象是,如果您将服务器控件添加到转发器的 ItemTemplate 中,那么分配给这些控件的 ID 将在回发中持续存在,并且将保持状态。但它似乎没有发生。这是我的项目模板:

<asp:HiddenField ID="hidPending" runat="server" value="<%# DataBinder.Eval(Container.DataItem, "Id")%>" />
<td class="leftpadd"><uc:restrictedtext ID="uclblCategory" runat="server" Width="125" /></td>
<td style="border-left:1px solid #528ABD;" class="leftpadd"><%# DataBinder.Eval(Container.DataItem, "SelectedOptions")%></td>
<td style="border-left:1px solid #528ABD;" class="leftpadd"><%# DataBinder.Eval(Container.DataItem, "Price.IncludingTax", "{0:C}")%></td>
<td style="border-left:1px solid #528ABD;" class="leftpadd"><%# DataBinder.Eval(Container.DataItem, "ExtrasCost", "{0:C}")%></td>
<td style="border-left:1px solid #528ABD;" class="leftpadd"><%# DataBinder.Eval(Container.DataItem, "Quantity", "{0:000}")%></td>
<td style="border-left:1px solid #528ABD;" class="leftpadd"><asp:CheckBox ID="chkPendingItems" runat="server" /></td>

填充得很好。我希望用户能够使用复选框从中继器中选择某些项目,并在单击中继器外部的按钮时“处理”它们(即对这些项目执行一些数据操作)。这是我的按钮点击代码:
Private Sub lnkPendingProcessSelected_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkPendingProcessSelected.Click
For Each rItem As RepeaterItem In rptPendingItems.Items
If rItem.ItemType = ListItemType.Item Or rItem.ItemType = ListItemType.AlternatingItem Then
Dim chk As CheckBox = DirectCast(rItem.FindControl("chkPendingItems"), CheckBox)
If chk.Checked Then
Dim orderItemId As Integer
Dim hid As HiddenField = DirectCast(rItem.FindControl("hidPending"), HiddenField)
orderItemId = CInt(hid.Value)
My.Application.ManagerFactory.OrderManagerInstance.ChangeOrderItemStatus(orderItemId, Concrete.Cms.DataTransferObjects.OrderItemStatus.Processing)
End If
End If
Next
End Sub

但是,如果您逐步执行此操作,则会找到并正确分配复选框,但其 Checked 属性始终为 False。有人对为什么不维护状态以及我能做些什么有任何建议吗?

最佳答案

根据 Cyber​​Dude 的评论,您可能在数据绑定(bind)时重置了这些值。如果可能,请尝试使用 IsPostback 仅在第一页加载时进行数据绑定(bind)。

C#

if(!IsPostBack)
{
rptPendingItems.DataBind();
}

VB
If Not IsPostBack Then
rptPendingItems.DataBind()
End If

如果这不可能或不起作用,您可能必须手动获取和设置所有这些复选框值,并将它们保存在您的数据集或 session 或汇总中。

关于asp.net - 中继器中的复选框控件未保持状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4144236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com