添加sqlparameter时的FindControl性能

时间:2015-04-15 12:55:08

标签: c# asp.net webforms

我的ASP.NET表单中有大约65个文本框字段。 我没有逐个将所有参数添加到SqlCommand,而是想这样做。

using (SqlCommand com = new SqlCommand(query, con))
{
    string[] fields = { "EmployeeID", "EmployeeNumber", "FirstName", "MiddleName", "LastName" };
    foreach (string fld in fields)
    {
        TextBox tb = (TextBox)Page.FindControl(fld); 
        com.Parameters.AddWithValue("@" + fld, tb.Text ); 
    }
}

在考虑此类场景的性能时,使用FindControl方法是一个好主意。

1 个答案:

答案 0 :(得分:1)

您无需在页面中找到所有文本框,而只能循环显示文本框控件: -

foreach (TextBox textbox in Page.Controls.OfType<TextBox>())
{
            //Your Code here
}

但我确实注意到与FindControl相比,你将获得多少性能提升。

另外,正如@AFract所提到的,因为Control集合不是递归的,为了递归地获取所有控件,你可以使用这个非常有用的扩展方法: -

public static IEnumerable<TControl> GetChildControls(this Control control) where TControl : Control
{
    var children = (control.Controls != null) ? control.Controls.OfType<TControl>() : Enumerable.Empty<TControl>();
    return children.SelectMany(c => GetChildControls(c)).Concat(children);
}

借鉴Here