3

我要做的基本上是创建一种方法来验证所有文本框是否已满。因此,如果我在一页上有 11 个文本框,我基本上可以运行这个 QC 检查并验证每个文本框都有一些信息。

这是我正在尝试做的,但没有成功。

private void VerifyTextBoxes()
{
    Control[] AllTextBoxes = FindControl("TextBox");
    foreach(Control c in AllTextBoxes)
    {
        //verify work here
    }
}

问题是双重的,我知道 FindControl 没有转换为 [],但我不知道该怎么做。此外,FindControl 正在寻找一个 ID 名称,有没有办法按类型找到它?例如所有的文本框?还是所有组合框?

这是我的aspx

<asp:Content ID="Content1" ContentPlaceHolderID="AdministrationContent" runat="Server">
<ul>
    <li>
        <asp:Label ID="DealerShipID" runat="server" Text="Dealership ID"></asp:Label>
    </li>
    <li>
        <telerik:RadTextBox ID="InputDealershipID" runat="server" Width="250px">
        </telerik:RadTextBox>
    </li>
</ul>

4

2 回答 2

1

您可以遍历所有控件并仅拉出文本框:

protected void Page_Load(object sender, EventArgs e)
{
    List<RadTextBox> allTextBoxes = new List<RadTextBox>();
    FindTextBoxes(this, allTextBoxes);

    foreach (RadTextBox tb in allTextBoxes)
    {
        // Do something here.
    }
}

private void FindTextBoxes(Control parent, List<RadTextBox> allTextBoxes)
{
    foreach (Control c in parent.Controls)
    {
        RadTextBox tb = c as RadTextBox;
        if (tb != null)
        {
            allTextBoxes.Add(tb);
        }

        FindTextBoxes(c, allTextBoxes);
    }
}
于 2012-07-22T15:52:58.203 回答
1
private bool VerifyTextBoxes(Control parent)
{
    var myTextBoxs = parent.Controls.OfType<TextBox>();

    bool allgood=true;

    foreach(TextBox txtbx in myTextBoxs)
    {
        if(String.IsNullOrWhiteSpace(txtbx.Text.ToString())
        allgood=false;
    }
    return allgood;
}

在您要验证的地方使用此行

if(!VerifyTextBoxes(Content1))
{
    //Do something is not verfied, i.e found null
}
于 2012-07-22T15:56:40.133 回答