unable to cast type System.Web.UI.Control to System.Web.UI.WebControls.Label and object set to null

  • Thread starter Thread starter Andy B
  • Start date Start date
A

Andy B

I have the following listView control on a page:

<asp:ListView ID="ListView1" runat="server"
ItemPlaceholderID="PlaceHolder1">

<ItemTemplate>

<dl>

<dt>

<asp:Label ID="Label1" runat="server" Text='Eval("Keys")'></asp:Label>

</dt>

<dd>

<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>

</dd>

</dl>

</ItemTemplate>

<LayoutTemplate>

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>

</LayoutTemplate>

</asp:ListView>

The code behind for the page that it is on is below. I am trying to get the
text for the key and value pair into the labels above. I get 2 different
errors depending on what I use in the code behind. There will be comments
where required.

namespace Contracts {

public partial class _Default : System.Web.UI.Page {

//create a contract for use in the page.

Contract StockContract = new Contract();

protected void Page_Load(object sender, EventArgs e) {

//create a ContractDictionary and assign it to the Dictionary property.

StockContract.Dictionary = new ContractDictionary<string, string>();



//add an entry to the dictionary

StockContract.Dictionary.Add("Word", "Just testing here...");



//dataBind the listview control where the entries from the dictionary will
be seen to the Dictionary

ListView1.DataSource = StockContract.Dictionary;

ListView1.DataBind();

//these next 2 lines cause a 'unable to cast type System.Web.UI.Control to
System.Web.UI.WebControls.Label error.

//Label WordLabel = (Label)ListView1.Controls[0];

//Label DefinitionLabel = (Label)ListView1.Controls[1];



//these next 2 lines cause an 'Object set to null reference' error.

//Label WordLabel = (Label)ListView1.FindControl("Label1");

//Label DefinitionLabel = (Label)ListView1.FindControl("Label2");



//cycle through the key/value pair and give the values to the Labels inside
the ListView1.

foreach(KeyValuePair<string, string> values in StockContract.Dictionary) {

WordLabel.Text = values.Key;

DefinitionLabel.Text = values.Value;

}

}

}

}



Any ideas how to fix this?
 
you labels are not direct children of the listview. they are children of the
template that is a child of the listview. you need to do a recursive search
for the labels.

-- bruce (sqlwork.com)
 
How do you do this?


bruce barker said:
you labels are not direct children of the listview. they are children of
the
template that is a child of the listview. you need to do a recursive
search
for the labels.

-- bruce (sqlwork.com)


Andy B said:
I have the following listView control on a page:

<asp:ListView ID="ListView1" runat="server"
ItemPlaceholderID="PlaceHolder1">

<ItemTemplate>

<dl>

<dt>

<asp:Label ID="Label1" runat="server" Text='Eval("Keys")'></asp:Label>

</dt>

<dd>

<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>

</dd>

</dl>

</ItemTemplate>

<LayoutTemplate>

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>

</LayoutTemplate>

</asp:ListView>

The code behind for the page that it is on is below. I am trying to get
the
text for the key and value pair into the labels above. I get 2 different
errors depending on what I use in the code behind. There will be comments
where required.

namespace Contracts {

public partial class _Default : System.Web.UI.Page {

//create a contract for use in the page.

Contract StockContract = new Contract();

protected void Page_Load(object sender, EventArgs e) {

//create a ContractDictionary and assign it to the Dictionary property.

StockContract.Dictionary = new ContractDictionary<string, string>();



//add an entry to the dictionary

StockContract.Dictionary.Add("Word", "Just testing here...");



//dataBind the listview control where the entries from the dictionary
will
be seen to the Dictionary

ListView1.DataSource = StockContract.Dictionary;

ListView1.DataBind();

//these next 2 lines cause a 'unable to cast type System.Web.UI.Control
to
System.Web.UI.WebControls.Label error.

//Label WordLabel = (Label)ListView1.Controls[0];

//Label DefinitionLabel = (Label)ListView1.Controls[1];



//these next 2 lines cause an 'Object set to null reference' error.

//Label WordLabel = (Label)ListView1.FindControl("Label1");

//Label DefinitionLabel = (Label)ListView1.FindControl("Label2");



//cycle through the key/value pair and give the values to the Labels
inside
the ListView1.

foreach(KeyValuePair<string, string> values in StockContract.Dictionary)
{

WordLabel.Text = values.Key;

DefinitionLabel.Text = values.Value;

}

}

}

}



Any ideas how to fix this?
 
Back
Top