Solved

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

Posted on 2009-07-09
3
448 Views
Last Modified: 2013-11-07
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

0
Comment
Question by:udsmr
  • 2
3 Comments
 
LVL 18

Expert Comment

by:carlnorrbom
ID: 24824304
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
 

Author Comment

by:udsmr
ID: 24826342
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
 

Accepted Solution

by:
udsmr earned 0 total points
ID: 24853766
I moved on and reworked my page never came up with a solution
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now