加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从页脚调用命令时获取转发器项复选框值

发布时间:2020-12-15 04:06:44 所属栏目:百科 来源:网络整理
导读:通过复选框列表进行以下转发器控制: asp:Repeater ID="rptItemList" runat="server"HeaderTemplate/HeaderTemplateItemTemplate div asp:CheckBox ID="chkItem" runat="server" Text='%# DataBinder.Eval(Container.DataItem,"ItemName").ToString() %' / a
通过复选框列表进行以下转发器控制:
<asp:Repeater ID="rptItemList" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
    <div>
        <asp:CheckBox ID="chkItem" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"ItemName").ToString() %>' />
        <asp:HiddenField ID="hdItem" runat="server" Value='<%# DataBinder.Eval(Container.DataItem,"ItemId").ToString() %>' />
    </div>
</ItemTemplate>
<FooterTemplate>
    <asp:LinkButton ID="lbtnDel" runat="server" Text="Delete" OnClick="lbtnDel_Click" OnClientClick="return confirm('Are you sure you want to delete selected items from this list?')"></asp:LinkButton>
</FooterTemplate>
</asp:Repeater>

并按照后面的代码来处理lbtnDel_Click事件:

protected void lbtnDel_Click(object sender,EventArgs e)
    {
        foreach (RepeaterItem ri in rptItemList.Items)
        {
            CheckBox chk = (CheckBox)ri.FindControl("chkItem");
            HiddenField hd = (HiddenField)ri.FindControl("hdItem");

            if (chk.Checked)
            {
                var tc = new ItemController();
                tc.DeleteItem(Convert.ToInt32(hd.Value));
            }
        }
        Response.Redirect(DotNetNuke.Common.Globals.NavigateURL());
    }

当我选中一个复选框并单击“删除”时,代码会找到该复选框,但会将其读取为未选中状态,因此不会删除该项目.

有任何想法吗?

解决方法

不是100%肯定,但你是否在每个页面加载中进行数据绑定?尝试仅绑定!IsPostBack 每当我遇到这样的问题时,通常是因为页面加载导致转发器重新绑定并杀死所有当前状态

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读