Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net (http://www.velocityreviews.com/forums/f29-asp-net.html)
-   -   unable to cast type System.Web.UI.Control to System.Web.UI.WebControls.Label and object set to null reference (http://www.velocityreviews.com/forums/t607203-unable-to-cast-type-system-web-ui-control-to-system-web-ui-webcontrols-label-and-object-set-to-null-reference.html)

Andy B 04-23-2008 03:51 PM

unable to cast type System.Web.UI.Control to System.Web.UI.WebControls.Label and object set to null reference
 
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?







bruce barker 04-23-2008 04:47 PM

RE: unable to cast type System.Web.UI.Control to System.Web.UI.WebCont
 
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" wrote:

> 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?
>
>
>
>
>
>
>


Andy B 04-23-2008 04:56 PM

Re: unable to cast type System.Web.UI.Control to System.Web.UI.WebCont
 
How do you do this?


"bruce barker" <brucebarker@discussions.microsoft.com> wrote in message
news:EFC3C4FB-F431-43BB-A0EA-33C6F2688A99@microsoft.com...
> 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" wrote:
>
>> 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?
>>
>>
>>
>>
>>
>>
>>





All times are GMT. The time now is 04:56 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.