【问题标题】:How to get all web form elements value [duplicate]如何获取所有Web表单元素的值[重复]
【发布时间】:2016-02-29 19:40:28
【问题描述】:

我有一个简单的网络表单,它由几个文本框和下拉菜单组成。我需要一种方法来从列表的开头获取所有元素的值。我知道我可以使用 textbox1.value 单独获取值,但我不知道表单中有多少个文本框/下拉列表。 例如

<form id="form1" runat="server">
    <div>
        Tier: 
            <asp:DropDownList ID="Tier" runat="server">
                        <asp:ListItem>Select Tier</asp:ListItem>
                        <asp:ListItem>Tier1</asp:ListItem>
                        <asp:ListItem>Tire2</asp:ListItem>
                        <asp:ListItem>Tier3</asp:ListItem>
            </asp:DropDownList>

        Author: 
            <asp:DropDownList ID="Author" runat="server">
                        <asp:ListItem>Select Author</asp:ListItem>
                        <asp:ListItem>Author1</asp:ListItem>
                        <asp:ListItem>Author2</asp:ListItem>
                        <asp:ListItem>Author3</asp:ListItem>
            </asp:DropDownList>

        Quotation For:
            <asp:TextBox ID="questionfor" runat="server"></asp:TextBox>
    </div>

如何获取列表中的值?我如何遍历它们?最终目的是将元素 ID 及其值存储在数据库中。因此,除了值之外,我还需要 id。例如,在数据库中,我将有两列 elementName(即 elementID)及其对应的值。

【问题讨论】:

  • 您可以通过多种方式执行此操作.. 如果您了解 Lambda's 以及如何执行 foreach,您可以根据 Controls 类型执行此操作.. 或者您可以使用旧时尚方式执行此操作并使用foreach(Control ctrl in Controls) 检查类型是 DropDowList 还是 TextBox..etc.. 实际上很简单

标签: c# .net webforms


【解决方案1】:

这里有一些你可以尝试的东西

Protected void GetControlValues(ControlCollection  controls)
{
    var holdList = new List<string>();
    foreach(Control c in controls)
    {
        if(c is System.Web.UI.WebControls.TextBox)
        {
            holdList.Add(c.Text); //this will get the value of the TextBox 
        } 
        else if (c.controls.Count > 0)
        {
            GetControlValues(c.Controls)
        }
    }
}

如果您想获取 ID 值,则可以检查 if(c.ID == textBoxId.ID) 然后将该 textBoxId.Text 添加到列表中,如果您知道要检查的控件类型,则可以在此 foreach 循环内进行多个 if 检查。.

【讨论】:

  • 递归在哪里?
  • 顺便说一句:No 控件的类型为ListItem
  • 我将编辑答案以使用 foreach 显示递归(控制循环
  • 为什么只是下拉列表?这也会照顾文本框吗?或者就此而言,任何其他元素,如复选框等?
  • 如果您使用foreach(Control ctrl in Controls) 检查类型,您需要为每个控件执行此操作,例如,您需要使用if(c is TextBox) 检查检查.. 这很简单..我会编辑并向您展示如何使用TextBox 会更有意义
猜你喜欢
  • 2018-03-03
  • 2014-08-21
  • 2019-09-20
  • 1970-01-01
  • 2012-10-20
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多