gpt4 book ai didi

asp.net - 如何以编程方式创建和使用来自 ASP.NET 的复选框列表?

转载 作者:行者123 更新时间:2023-12-01 01:37:10 25 4
gpt4 key购买 nike

我有一个包含内容表的页面,我需要允许用户选择要处理的行。我已经想出了如何向表格中添加一列复选框,但我似乎无法弄清楚如何测试提交表单时它们是否被选中。如果它们是静态元素,我就可以检查 do this.theCheckBox但它们是以编程方式生成的。

此外,我对如何将我的数据附加到它们(通过将其塞入 ID 属性中)的方式也不太满意。

我不确定它是否相关,但我正在查看一些 catch-22,因为我需要知道在我重新运行创建它们的代码之前检查了上次创建的哪些复选框。

编辑:
我找到了一个几乎可以解决的问题。通过设置 AutoPostBack属性(property)和CheckedChanged事件:

checkbox.AutoPostBack = false;
checkbox.CheckedChanged += new EventHandler(checkbox_CheckedChanged);

对于任何已更改的复选框,我可以在回发时调用代码。然而这有两个问题:
  • 回调是在之后(或期间,我不确定)处理的Page_Load我需要在哪里使用这些信息
  • 不会为页面加载时选中的复选框调用回调。


  • 编辑2:

    我最终做的是用一个知道前缀标记我所有的 ID 并将它塞在 Form_Load 的顶部。 :
    foreach (string v in this.Request.Form.AllKeys)
    {
    if (v.StartsWith(Prefix))
    {
    var data = v.Substring(Prefix.Length);
    }
    }

    其他一切似乎都晚了。

    最佳答案

    我将假设您使用的是 DataList 但这应该与可以模板化的 Control 一起使用。我还将假设您正在使用 DataBinding。

    代码前端:

    <asp:DataList ID="List" OnItemDataBound="List_ItemDataBound" runat="server">
    <ItemTemplate>
    <asp:CheckBox ID="DeleteMe" runat="server"/>
    <a href="<%# DataBinder.Eval(Container, "DataItem.Url")%>" target="_blank">
    <%# DataBinder.Eval(Container, "DataItem.Title")%></a>
    </ItemTemplate>
    </asp:DataList>
    <asp:Button ID="DeleteListItem" runat="server" OnClick="DeleteListItem_Click" ></asp:Button>

    背后的代码:
    public partial class Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!IsPostBack)
    LoadList();
    }

    protected void DeleteListItem_Click(object sender, EventArgs e)
    {
    foreach (DataListItem li in List.Items)
    {
    CheckBox delMe = (CheckBox)li.FindControl("DeleteMe");

    if (delMe != null && delMe.Checked)
    //Do Something
    }
    }

    LoadList();
    }

    protected void LoadList()
    {
    DataTable dt = //Something...
    List.DataSource = dt;
    List.DataBind();
    }

    protected void List_ItemDataBound(object sender, DataListItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
    string id = DataBinder.Eval(e.Item.DataItem, "ID").ToString();
    CheckBox delMe = (CheckBox)e.Item.FindControl("DeleteMe");

    if (delMe != null)
    delMe.Attributes.Add("value", id);
    }
    }
    }

    关于asp.net - 如何以编程方式创建和使用来自 ASP.NET 的复选框列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1180443/

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