When I programmatically open a datagrid row in edit mode my dropdown in the edittemplate does not show.

I have a datagrid with a radiobutton and several other columns of data.  When the user clicks a radio button that selected row is programmatically put into edit mode, one of the columns has a dropdown which is located in an EditItemTemplate but the drop down does not show it only shows as a textbox.  Does any one have an idea why the dropdown doesnt show?
ASPX Page
 
<asp:DataGrid TabIndex="3" id="dgPeople" runat="server" CellSpacing="2" GridLines="None" BorderColor="#666699" BorderWidth="1px" AutoGenerateColumns="False" AllowSorting="True" AllowPaging="False" Width="100%">
<Columns>
<asp:TemplateColumn ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="10%" ItemStyle-Width="10%" HeaderStyle-CssClass="clsGridHeaderText" HeaderStyle HorizontalAlign="Center">
  <HeaderTemplate>					<font color="#165A8E">&nbsp;Select&nbsp;</font>
</HeaderTemplate>
<ItemTemplate>
  <asp:RadioButton ID="radSelect" OnCheckedChanged="SelectOnlyOne" GroupName='<%# DataBinder.Eval(Container, "DataItem.UserID")%>' AutoPostBack="True" Runat="server"></asp:RadioButton>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="First Name" HeaderStyle-CssClass="clsGridHeaderText" 
SortExpression="FirstName" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Left" HeaderStyle-Wrap="False" ItemStyle-Wrap="False">
<ItemTemplate>&nbsp;
<asp:Label id="lblFirstName" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.FirstName")%>' ></asp:Label>
</ItemTemplate>
<EditItemTemplate>
                            <asp:TextBox runat="Server" id="txtFirstName" Text='<%# DataBinder.Eval(Container.DataItem, "FirstName")%>' />
                          </EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Discipline" HeaderStyle-CssClass="clsGridHeaderText" SortExpression="Discipline" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Wrap="False" ItemStyle-Wrap="False">
<ItemTemplate><asp:Label ID="discipline" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Discipline")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>						  <asp:DropDownList id="drpDiscipline" runat="server">			 <asp:ListItem Value="1">Physical Therapist</asp:ListItem>
 <asp:ListItem Value="2">Recreational Therapist</asp:ListItem>
<asp:ListItem Value="3">Registered Nurse</asp:ListItem>
<asp:ListItem Value="4">Occupational Therapist, Registered</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
 
VB Code Behind
 
THIS IS CALLED WHEN USER CLICKS ON A RADIO BUTTON
Public Sub SelectOnlyOne(ByVal sender As Object, ByVal e As System.EventArgs)
 
      Dim pDTPeople As DataTable
     'THIS IS WHERE THE ROW GETS PUT INTO EDIT MODE BASED ON A ROW INDEX
     'RETURNED BY SETRADIOBUTTON
      'Call SetRadioButton the first time to get the row selected
      dgPeople.EditItemIndex = SetRadioButton(sender, e)
 
      'Load the data from ViewState in to the Dataset object.
      gfpSaveOrLoadGridViewState(pDTPeople, dgPeople.ID, "LOAD")
 
      'Fill datagrid with data stored in session with corresponding pageindex.
      Call mfpBindGrid(False, 0, pDTPeople, True)
 
      'Call SetRadioButton a second time to set the selection on the radio button
      SetRadioButton(sender, e)
 
 End Sub
 
Private Function SetRadioButton(ByVal sender As Object, ByVal e As System.EventArgs) As Integer
 
      Dim intRow As Integer = -1
 
      Dim m_ClientID As String = ""
      Dim rb As New RadioButton
 
      rb = CType(sender, RadioButton)
      m_ClientID = rb.ClientID
      rb = CType(sender, RadioButton)
      m_ClientID = rb.ClientID
 
      For Each i As DataGridItem In dgPeople.Items
        rb = CType(i.FindControl("radSelect"), RadioButton)
        rb.Checked = False
        If (m_ClientID = rb.ClientID) Then
          rb.Checked = True
 
          Response.Write(rb.GroupName & "<BR>")
          intRow = i.ItemIndex
        End If
      Next
 
      Return intRow
 
    End Function

Open in new window

udsmrAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

carlnorrbomCommented:
Hi,

I don't have access to my dev box at the moment, but what if you added an eval to bind the selected item for the dropdown? See code.

/Carl.
<asp:TemplateColumn HeaderText="Discipline" HeaderStyle-CssClass="clsGridHeaderText" SortExpression="Discipline" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Wrap="False" ItemStyle-Wrap="False">
    <ItemTemplate>
        <asp:Label ID="discipline" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Discipline")%>'>
        </asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:DropDownList id="drpDiscipline" runat="server" SelectedItem='<%# DataBinder.Eval(Container, "DataItem.Discipline")%>'>
            <asp:ListItem Value="1">Physical Therapist</asp:ListItem>
            <asp:ListItem Value="2">Recreational Therapist</asp:ListItem>
            <asp:ListItem Value="3">Registered Nurse</asp:ListItem>
            <asp:ListItem Value="4">Occupational Therapist, Registered</asp:ListItem>
        </asp:DropDownList>
    </EditItemTemplate>
</asp:TemplateColumn>

Open in new window

0
udsmrAuthor Commented:
That didn't work.  I was running several other tests and it looks like when you click the radio button to put the row into edit mode it doesn't actually load the controls that are in the EditItemTemplate it loads what looks like textboxs (no dropdown).  I was working on the same page with a second datagrid  this new grid caused a post back and the 1st grid referenced above reloaded and the drop down showed but the data in the grid was missing because the data was not reloaded during this postback.
0
udsmrAuthor Commented:
I moved on and reworked my page never came up with a solution
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.