如何从代码后面访问列表视图中的控件?

时间:2009-12-21 22:24:17

标签: c# .net asp.net listview

我有一个名为CouncilListView的ListView和一个名为EmailTextBox的TextBox,它位于ListView中。

如何从CodeBehind访问此TextBox?

我尝试了某些形式的FindControl,如:

this.Page.FindControl("EmailTextBox");
this.Page.FindControl("CouncilListView").FindControl("EmailTextBox");
this.CouncilListView.Findcontrol("EmailTextBox");
this.FindControl("EmailTextBox");

但是我收到了这个错误:

  

Object reference not set to an instance of an object.

2 个答案:

答案 0 :(得分:1)

这是假设,因为我看不到你的完整页面代码隐藏和ListView代码,但是:

原因是文本框是Listview的一部分;所以你需要在ListView中找到它。一种可能的方法是在下面。

public void GetTextBoxValuesFromListView()
{
    Textbox tb = null;
    ListViewItem Item = null;
    foreach (ListViewDataItem item in CouncilListView.Items)
    {
        Item = item;
        tb = ((TextBox) (Item.FindControl("EmailTextBox")));
        if (tb.Text != null)
        {
            //Do something
        }
    }
}

我在ListViews遇到了一些问题我在一段时间后有问题,它们可能对您有用:

  

答案 1 :(得分:0)

我这样解决了:

protected void CouncilListView_ItemInserted(Object sender, ListViewInsertedEventArgs e)
{
    foreach (DictionaryEntry Emailentry in e.Values)
    {
        if (Emailentry.Key == "Email") //table field name is "email"
        {
            message.To.Add(new MailAddress(Emailentry.Value.ToString()));
        }
    }
}