Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > can't gain access to controls

Reply
Thread Tools

can't gain access to controls

 
 
bill yeager
Guest
Posts: n/a
 
      02-26-2004
I did some more debugging and found the following:

1) I placed the following code in the button event just
to see if I could cycle thru the datagrid control
collection:
<code>
Dim strhello As String
Dim myDataListItem As DataListItem
Dim myDatagridItem As DataGridItem
Dim myCheckBox As CheckBox
Dim myDataGrid As DataGrid

For Each myDataListItem In DataList2.Items
myDataGrid = myDataListItem.FindControl
("DataGrid3")
If Not IsNothing(myDataGrid) Then
For Each myDatagridItem In
myDataGrid.Items
myCheckBox = myDataGrid.FindControl
("Condition3")
If myCheckBox.Checked Then
strhello = "found!"
'do any processing that is needed
End If
Next
End If
Next
</code>

2) The line "For Each myDatagridItem In myDataGrid.Items"
produces the following:
- myDataGrid.Items.Count yields 4 (which is
correct since there are 4 rows in this child grid)
- myDatagridItem.Controls.Count yields 8 (which
is correct because there are 8 column controls).
According to this statement, I should be able to access
the columns inside this child grid.
- However, the statement "myCheckBox =
myDataGrid.FindControl("Condition3")" yields NOTHING... I
can't access any of the column controls inside this child
datagrid!

3) I'm able to get a listing on each of the items inside
this datagrid from item 0 to 7 as follows:
myDatagridItem.Controls.Item(7)
{System.Web.UI.WebControls.TableCell}
[System.Web.UI.WebControls.TableCell]:
{System.Web.UI.WebControls.TableCell}
BindingContainer:
{System.Web.UI.WebControls.DataGridItem}
ClientID: "DataList2__ctl1_Datagrid3__ctl2__ctl1"
Controls: {System.Web.UI.ControlCollection}
EnableViewState: True
ID: Nothing
NamingContainer:
{System.Web.UI.WebControls.DataGridItem}
Page: {ASP.BulkConditions_aspx}
Parent: {System.Web.UI.WebControls.DataGridItem}
Site: Nothing
TemplateSourceDirectory: "/LydianMDS"
UniqueID: "DataList2:_ctl1atagrid3:_ctl2:_ctl1"
Visible: True

Notice the ID above. EACH OF THESE ITEMS IS SET TO
NOTHING! That is the reason why I can't access the
controls in code..........

OK now... Since I have debugged this issue, I'm hoping
someone will be able to tell me WHY THOSE ITEMS HAVE AN
ID OF NOTHING... I'm expecting to find these items
programatcially, but can't. In my HTML below, you can
plainly see that the template columns have an ID
associated with them.

The following is the HTML of my entire datalist (parent)
and datagrid (child) controls.
<code>
<aspataList id=DataList2 style="Z-INDEX: 105; LEFT:
8px; POSITION: absolute; TOP: 192px" runat="server"
DataMember="spMSSASPGetDistinctOutstandingConditio nsInInve
storReviewStep" DataKeyField="Lock_Number" DataSource="<%
# DsOutstandingCondsInInvestorRvw1 %>" Width="936px"
BackColor="White" BorderColor="#999999"
BorderStyle="None" BorderWidth="1px" CellPadding="3"
GridLines="Vertical" Height="544px">
<SelectedItemStyle Font-
Bold="True" ForeColor="White"
BackColor="#008A8C"></SelectedItemStyle>
<HeaderTemplate>
<P>Outstanding
BULK Conditions</P>
</HeaderTemplate>
<AlternatingItemStyle
BackColor="Gainsboro"></AlternatingItemStyle>
<FooterTemplate>
NO MORE
OUTSTANDING CONDITIONS
</FooterTemplate>
<ItemStyle
ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
<ItemTemplate>
<asp:label
id=Name2 runat="server" Text='<%# DataBinder.Eval
(Container, "DataItem.Name")%>'>
</asp:label>
<asp:label
id=LockNumber2 runat="server" Text='<%# DataBinder.Eval
(Container, "DataItem.Lock_Number")%>'>
</asp:label>
<asp:label
id=LoanID2 runat="server" Text='<%# DataBinder.Eval
(Container, "DataItem.LoanID")%>' Visible="False">
</asp:label>
<P>

<asp:Button id="btnWaive" runat="server"
Text="Waive All Conditions"
CommandName="Waive"></asp:Button>&nbsp;&nbsp;&nbsp;&nbsp;

<asp:Button id="btnNoWaive" runat="server"
Text="Don't Waive Any Condtions"
CommandName="NoWaive"></asp:Button></P>
<aspataGrid
id=Datagrid3 runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#999999"
BorderStyle="None" BorderWidth="1px" CellPadding="3"
GridLines="Vertical" datasource='<%#
Container.DataItem.CreateChildView
("spMSSASPGetDistinctOutstandingConditionsInInvest orReview
StepspMSSASPGetOutstandingConditionsInInvestorRevi ewStep")
%>'>

<SelectedItemStyle Font-Bold="True"
ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>

<AlternatingItemStyle
BackColor="Gainsboro"></AlternatingItemStyle>

<ItemStyle ForeColor="Black"
BackColor="#EEEEEE"></ItemStyle>

<HeaderStyle Font-Bold="True" ForeColor="White"
BackColor="#000084"></HeaderStyle>

<FooterStyle ForeColor="Black"
BackColor="#CCCCCC"></FooterStyle>
<Columns>

<asp:TemplateColumn>

<ItemTemplate>

<asp:checkbox runat="server"
id="Condition3"></asp:checkbox>

</ItemTemplate>

</asp:TemplateColumn>

<asp:BoundColumn DataField="Name" ReadOnly="True"
HeaderText="Name"></asp:BoundColumn>

<asp:TemplateColumn HeaderText="LoanID">

<ItemTemplate>

<asp:label runat="server" id="LoanID3"
Text='<%# DataBinder.Eval(Container, "DataItem.LoanID") %
>'>


</asp:label>

</ItemTemplate>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="Lock Number">

<ItemTemplate>

<asp:label runat="server"
id="LockNumber3" Text='<%# DataBinder.Eval
(Container, "DataItem.Lock_Number") %>'>

</asp:label>

</ItemTemplate>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="Conditional Dtl
ID">

<ItemTemplate>

<asp:label runat="server"
id="ConditionDetailID3" Text='<%# DataBinder.Eval
(Container, "DataItem.ConditionDetailID") %>'>

</asp:label>

</ItemTemplate>

</asp:TemplateColumn>

<asp:BoundColumn DataField="ConditionID"
ReadOnly="True"
HeaderText="ConditionID"></asp:BoundColumn>

<asp:BoundColumn DataField="Description"
ReadOnly="True"
HeaderText="Description"></asp:BoundColumn>

<asp:BoundColumn DataField="Comment"
ReadOnly="True" HeaderText="Comment"></asp:BoundColumn>
</Columns>

<PagerStyle HorizontalAlign="Center"
ForeColor="Black" BackColor="#999999"
Mode="NumericPages"></PagerStyle>
</aspataGrid>
</ItemTemplate>
<FooterStyle
ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<SeparatorTemplate>
------------------
----------------------------------------------------------
----------------------------------------------------------
--------------------
</SeparatorTemplate>
<HeaderStyle Font-
Bold="True" ForeColor="White"
BackColor="#000084"></HeaderStyle>
</aspataList>
</code>

Can someone PLEASE HELP ME WITH THIS. I have gone as FAR
AS I can go with it. I'm totally stuck at this point...

Why do those controls in the datagrid have an ID of
NOTHING (thereby not allowing me to access those
controls)...

Thanks,

Bill
 
Reply With Quote
 
 
 
 
bill yeager
Guest
Posts: n/a
 
      02-26-2004
The problem was that I wasn't doing the findcontrol
method down on the proper child control level!!! By
looping thru the following code, and playing around, I
was able to gain access to the child controls inside the
datagrid....

For all to see and share:
<code>
Dim myDataListItem As DataListItem
Dim myDatagridItem As DataGridItem
Dim myDataGrid As DataGrid
Dim myCheckBox As CheckBox
Dim lblLockNumber As Label
Dim lblConditionDetailID As Label
Dim lblLoanID As Label
Dim i As Int16

Try
For Each myDataListItem In DataList2.Items
myDataGrid = myDataListItem.FindControl
("DataGrid3")
If Not IsNothing(myDataGrid) Then
i = 0
For Each myDatagridItem In
myDataGrid.Items
myCheckBox =
myDatagridItem.Controls.Item(i).FindControl("Condi tion3")
If myCheckBox.Checked Then
lblLockNumber =
myDatagridItem.Controls.Item(i).FindControl("LockN umber3")
lblConditionDetailID =
myDatagridItem.Controls.Item(i).FindControl
("ConditionDetailID3")
lblLoanID =
myDatagridItem.Controls.Item(i).FindControl("LoanI D3")
Dim drSave As
dsSaveCondition.dsSaveConditionRow =
DsSaveCondition1.dsSaveCondition.NewdsSaveConditio nRow
drSave.Lock_Number =
lblLockNumber.Text
drSave.ConditionDetailID =
lblConditionDetailID.Text
drSave.LoanID = lblLoanID.Text

DsSaveCondition1.dsSaveCondition.Rows.Add(drSave)
End If
i += 1
Next
End If
Next
Catch ex As Exception
m_blnError = True
Response.Write("<script>alert('" & ex.Message
& "');</script>")
End Try
</code>
>-----Original Message-----
>I did some more debugging and found the following:
>
>1) I placed the following code in the button event just
>to see if I could cycle thru the datagrid control
>collection:
><code>
>Dim strhello As String
> Dim myDataListItem As DataListItem
> Dim myDatagridItem As DataGridItem
> Dim myCheckBox As CheckBox
> Dim myDataGrid As DataGrid
>
> For Each myDataListItem In DataList2.Items
> myDataGrid = myDataListItem.FindControl
>("DataGrid3")
> If Not IsNothing(myDataGrid) Then
> For Each myDatagridItem In
>myDataGrid.Items
> myCheckBox = myDataGrid.FindControl
>("Condition3")
> If myCheckBox.Checked Then
> strhello = "found!"
> 'do any processing that is

needed
> End If
> Next
> End If
> Next
></code>
>
>2) The line "For Each myDatagridItem In

myDataGrid.Items"
>produces the following:
> - myDataGrid.Items.Count yields 4 (which is
>correct since there are 4 rows in this child grid)
> - myDatagridItem.Controls.Count yields 8 (which
>is correct because there are 8 column controls).
>According to this statement, I should be able to access
>the columns inside this child grid.
> - However, the statement "myCheckBox =
>myDataGrid.FindControl("Condition3")" yields NOTHING...

I
>can't access any of the column controls inside this

child
>datagrid!
>
>3) I'm able to get a listing on each of the items inside
>this datagrid from item 0 to 7 as follows:
>myDatagridItem.Controls.Item(7)
>{System.Web.UI.WebControls.TableCell}
> [System.Web.UI.WebControls.TableCell]:
>{System.Web.UI.WebControls.TableCell}
> BindingContainer:
>{System.Web.UI.WebControls.DataGridItem}
> ClientID: "DataList2__ctl1_Datagrid3__ctl2__ctl1"
> Controls: {System.Web.UI.ControlCollection}
> EnableViewState: True
> ID: Nothing
> NamingContainer:
>{System.Web.UI.WebControls.DataGridItem}
> Page: {ASP.BulkConditions_aspx}
> Parent: {System.Web.UI.WebControls.DataGridItem}
> Site: Nothing
> TemplateSourceDirectory: "/LydianMDS"
> UniqueID: "DataList2:_ctl1atagrid3:_ctl2:_ctl1"
> Visible: True
>
>Notice the ID above. EACH OF THESE ITEMS IS SET TO
>NOTHING! That is the reason why I can't access the
>controls in code..........
>
>OK now... Since I have debugged this issue, I'm hoping
>someone will be able to tell me WHY THOSE ITEMS HAVE AN
>ID OF NOTHING... I'm expecting to find these items
>programatcially, but can't. In my HTML below, you can
>plainly see that the template columns have an ID
>associated with them.
>
>The following is the HTML of my entire datalist (parent)
>and datagrid (child) controls.
><code>
><aspataList id=DataList2 style="Z-INDEX: 105; LEFT:
>8px; POSITION: absolute; TOP: 192px" runat="server"
>DataMember="spMSSASPGetDistinctOutstandingConditi onsInInv

e
>storReviewStep" DataKeyField="Lock_Number" DataSource="<%
># DsOutstandingCondsInInvestorRvw1 %>" Width="936px"
>BackColor="White" BorderColor="#999999"
>BorderStyle="None" BorderWidth="1px" CellPadding="3"
>GridLines="Vertical" Height="544px">
> <SelectedItemStyle Font-
>Bold="True" ForeColor="White"
>BackColor="#008A8C"></SelectedItemStyle>
> <HeaderTemplate>
> <P>Outstanding
>BULK Conditions</P>
> </HeaderTemplate>
> <AlternatingItemStyle
>BackColor="Gainsboro"></AlternatingItemStyle>
> <FooterTemplate>
> NO MORE
>OUTSTANDING CONDITIONS
> </FooterTemplate>
> <ItemStyle
>ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
> <ItemTemplate>
> <asp:label
>id=Name2 runat="server" Text='<%# DataBinder.Eval
>(Container, "DataItem.Name")%>'>
> </asp:label>
> <asp:label
>id=LockNumber2 runat="server" Text='<%# DataBinder.Eval
>(Container, "DataItem.Lock_Number")%>'>
> </asp:label>
> <asp:label
>id=LoanID2 runat="server" Text='<%# DataBinder.Eval
>(Container, "DataItem.LoanID")%>' Visible="False">
> </asp:label>
> <P>
>
> <asp:Button id="btnWaive" runat="server"
>Text="Waive All Conditions"
>CommandName="Waive"></asp:Button>
>
> <asp:Button id="btnNoWaive" runat="server"
>Text="Don't Waive Any Condtions"
>CommandName="NoWaive"></asp:Button></P>
> <aspataGrid
>id=Datagrid3 runat="server" AutoGenerateColumns="False"
>BackColor="White" BorderColor="#999999"
>BorderStyle="None" BorderWidth="1px" CellPadding="3"
>GridLines="Vertical" datasource='<%#
>Container.DataItem.CreateChildView
>

("spMSSASPGetDistinctOutstandingConditionsInInvest orReview
>StepspMSSASPGetOutstandingConditionsInInvestorRev iewStep"

)
>%>'>
>
> <SelectedItemStyle Font-Bold="True"
>ForeColor="White"

BackColor="#008A8C"></SelectedItemStyle>
>
> <AlternatingItemStyle
>BackColor="Gainsboro"></AlternatingItemStyle>
>
> <ItemStyle ForeColor="Black"
>BackColor="#EEEEEE"></ItemStyle>
>
> <HeaderStyle Font-Bold="True" ForeColor="White"
>BackColor="#000084"></HeaderStyle>
>
> <FooterStyle ForeColor="Black"
>BackColor="#CCCCCC"></FooterStyle>
> <Columns>
>
> <asp:TemplateColumn>
>
> <ItemTemplate>
>
> <asp:checkbox runat="server"
>id="Condition3"></asp:checkbox>
>
> </ItemTemplate>
>
> </asp:TemplateColumn>
>
> <asp:BoundColumn DataField="Name" ReadOnly="True"
>HeaderText="Name"></asp:BoundColumn>
>
> <asp:TemplateColumn HeaderText="LoanID">
>
> <ItemTemplate>
>
> <asp:label runat="server" id="LoanID3"
>Text='<%# DataBinder.Eval(Container, "DataItem.LoanID") %
>>'>

>
> </asp:label>
>
> </ItemTemplate>
>
> </asp:TemplateColumn>
>
> <asp:TemplateColumn HeaderText="Lock Number">
>
> <ItemTemplate>
>
> <asp:label runat="server"
>id="LockNumber3" Text='<%# DataBinder.Eval
>(Container, "DataItem.Lock_Number") %>'>
>
> </asp:label>
>
> </ItemTemplate>
>
> </asp:TemplateColumn>
>
> <asp:TemplateColumn HeaderText="Conditional Dtl
>ID">
>
> <ItemTemplate>
>
> <asp:label runat="server"
>id="ConditionDetailID3" Text='<%# DataBinder.Eval
>(Container, "DataItem.ConditionDetailID") %>'>
>
> </asp:label>
>
> </ItemTemplate>
>
> </asp:TemplateColumn>
>
> <asp:BoundColumn DataField="ConditionID"
>ReadOnly="True"
>HeaderText="ConditionID"></asp:BoundColumn>
>
> <asp:BoundColumn DataField="Description"
>ReadOnly="True"
>HeaderText="Description"></asp:BoundColumn>
>
> <asp:BoundColumn DataField="Comment"
>ReadOnly="True" HeaderText="Comment"></asp:BoundColumn>
> </Columns>
>
> <PagerStyle HorizontalAlign="Center"
>ForeColor="Black" BackColor="#999999"
>Mode="NumericPages"></PagerStyle>
> </aspataGrid>
> </ItemTemplate>
> <FooterStyle
>ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
> <SeparatorTemplate>
> ------------------
>---------------------------------------------------------

-
>---------------------------------------------------------

-
>--------------------
> </SeparatorTemplate>
> <HeaderStyle Font-
>Bold="True" ForeColor="White"
>BackColor="#000084"></HeaderStyle>
> </aspataList>
></code>
>
>Can someone PLEASE HELP ME WITH THIS. I have gone as FAR
>AS I can go with it. I'm totally stuck at this point...
>
>Why do those controls in the datagrid have an ID of
>NOTHING (thereby not allowing me to access those
>controls)...
>
>Thanks,
>
>Bill
>.
>

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
ASP.NET User control browser unable to gain focus ASP.Net programmer ASP .Net 0 05-13-2005 12:54 PM
Hawking hi-gain antenna Hackworth Wireless Networking 1 01-11-2005 10:13 PM
GATOR/GAIN PUBLISHING/CLARIA+ PIX ACL jonnah Cisco 4 05-02-2004 12:46 AM
cannot gain access to controls bill yeager ASP .Net 0 02-24-2004 03:38 PM
How to gain MCSE after passing 70-270 =?Utf-8?B?UGF1bCBIYXRoYXdheQ==?= MCSE 3 01-12-2004 05:09 PM



Advertisments