can't gain access to controls

Discussion in 'ASP .Net' started by bill yeager, Feb 26, 2004.

  1. bill yeager

    bill yeager Guest

    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="spMSSASPGetDistinctOutstandingConditionsInInve
    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
    ("spMSSASPGetDistinctOutstandingConditionsInInvestorReview
    StepspMSSASPGetOutstandingConditionsInInvestorReviewStep")
    %>'>

    <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
     
    bill yeager, Feb 26, 2004
    #1
    1. Advertising

  2. bill yeager

    bill yeager Guest

    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("Condition3")
    If myCheckBox.Checked Then
    lblLockNumber =
    myDatagridItem.Controls.Item(i).FindControl("LockNumber3")
    lblConditionDetailID =
    myDatagridItem.Controls.Item(i).FindControl
    ("ConditionDetailID3")
    lblLoanID =
    myDatagridItem.Controls.Item(i).FindControl("LoanID3")
    Dim drSave As
    dsSaveCondition.dsSaveConditionRow =
    DsSaveCondition1.dsSaveCondition.NewdsSaveConditionRow
    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:_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="spMSSASPGetDistinctOutstandingConditionsInInv

    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>
    > <asp:DataGrid
    >id=Datagrid3 runat="server" AutoGenerateColumns="False"
    >BackColor="White" BorderColor="#999999"
    >BorderStyle="None" BorderWidth="1px" CellPadding="3"
    >GridLines="Vertical" datasource='<%#
    >Container.DataItem.CreateChildView
    >

    ("spMSSASPGetDistinctOutstandingConditionsInInvestorReview
    >StepspMSSASPGetOutstandingConditionsInInvestorReviewStep"

    )
    >%>'>
    >
    > <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
    >.
    >
     
    bill yeager, Feb 26, 2004
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. bill yeager

    cannot gain access to controls

    bill yeager, Feb 24, 2004, in forum: ASP .Net
    Replies:
    0
    Views:
    363
    bill yeager
    Feb 24, 2004
  2. ASP.Net programmer

    ASP.NET User control browser unable to gain focus

    ASP.Net programmer, May 13, 2005, in forum: ASP .Net
    Replies:
    0
    Views:
    344
    ASP.Net programmer
    May 13, 2005
  3. ASP.Net programmer

    ASP.NET User control browser unable to gain focus

    ASP.Net programmer, May 13, 2005, in forum: ASP .Net
    Replies:
    2
    Views:
    446
    ASP.Net programmer
    May 13, 2005
  4. Tom Cole
    Replies:
    0
    Views:
    289
    Tom Cole
    Jan 10, 2004
  5. steven robinson
    Replies:
    0
    Views:
    369
    steven robinson
    Apr 30, 2004
Loading...

Share This Page