By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,644 Members | 1,866 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,644 IT Pros & Developers. It's quick & easy.

can't gain access to controls

P: n/a
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:_ctl1:Datagrid3:_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>
<asp:DataList 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>
<asp:DataGrid
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>
</asp:DataGrid>
</ItemTemplate>
<FooterStyle
ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<SeparatorTemplate>
------------------
----------------------------------------------------------
----------------------------------------------------------
--------------------
</SeparatorTemplate>
<HeaderStyle Font-
Bold="True" ForeColor="White"
BackColor="#000084"></HeaderStyle>
</asp:DataList>
</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
Nov 18 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
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... Ican't access any of the column controls inside this childdatagrid!

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:_ctl1:Datagrid3:_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>
<asp:DataList id=DataList2 style="Z-INDEX: 105; LEFT:
8px; POSITION: absolute; TOP: 192px" runat="server"
DataMember="spMSSASPGetDistinctOutstandingConditi onsInInv estorReviewStep" 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>
<asp:DataGrid
id=Datagrid3 runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#999999"
BorderStyle="None" BorderWidth="1px" CellPadding="3"
GridLines="Vertical" datasource='<%#
Container.DataItem.CreateChildView
("spMSSASPGetDistinctOutstandingConditionsInInvest orReviewStepspMSSASPGetOutstandingConditionsInInvestorRev 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>
</asp:DataGrid>
</ItemTemplate>
<FooterStyle
ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<SeparatorTemplate>
------------------
---------------------------------------------------------

---------------------------------------------------------- ---------------------
</SeparatorTemplate>
<HeaderStyle Font-
Bold="True" ForeColor="White"
BackColor="#000084"></HeaderStyle>
</asp:DataList>
</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
.

Nov 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.