在Formview中循环插入模板来获取控件Id没有返回任何结果
本文关键字:Id 控件 返回 结果 任何 获取 Formview 循环 插入 | 更新日期: 2023-09-27 18:12:18
我有一个带有一些文本框的formview。这些文本框的值需要在插入项时进行加密,然后保存到db表中。我一直在尝试下面的代码与各种变化没有任何运气。它不返回任何东西或以对象引用null消息结束。
protected void formview1_iteminserting(object sender, FormViewInsertEventArgs e)
{
if (FormView1.CurrentMode == FormViewMode.Insert)
{
foreach (Control c in FormView1.Controls)
{
if (c is TextBox)
{
TextBox txtBox = (TextBox)c;
Response.Write(txtBox.ID);
}
} }
在这种情况下,您可以使用循环来实现此目的:
如果你使用VS向导使用SqlDataSource
填充FormView
数据控件,那么你的文本框控件的ID将看起来像这样:[Name of Data Field] + TextBox
//auto generated by VS Wizard <asp:TextBox Text='<%# Bind("NameText") %>' ID="NameTextBox" />
但是如果你自己创建了它们,你仍然可以遵循这个规则来命名你的控件id。和这对我们的技巧很重要。
现在您可以简单地使用这段代码来获取所有文本框控件的值。
protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
{
foreach (dynamic value in e.Values)
{
TextBox txtBox = FormView1.FindControl(value.Key + "TextBox") as TextBox;
if (txtBox != null)
{
Response.Write(txtBox.ID);
}
}
}
注意如果没有找到控件,将不会有任何异常,因为它将由as
操作符关键字为您自动处理;-)