Solved

asp.net vb assign dropdownlist selected value based on guid

Posted on 2011-03-08
3
921 Views
Last Modified: 2012-05-11
hello,

i have a listview on a page that gets is value from a LINQ datasource(which in turn gets is record based on a supplied query string).  There are a number of dropdownlists in the item template of the listview, I can successfully assign the values of the Non Bound dropdownlists, but the one dropdownlist I have that is databound is not taking an assigned selected value.  I need help assigning a selected value to the bound dropdownlist

code:
 
<asp:ListView ID="ListView1" runat="server" DataKeyNames="idTrade" 
            DataSourceID="LinqDataTrade">
            <ItemTemplate>
                <asp:Label ID="idTrade" runat="server" Text='<%# Eval("idTrade") %>' Visible="False" />

                <div class="HeadingTxt">                           
                    <asp:Label ID="chrTitleLabel" runat="server" 
                        Text="Update Union Shift Information:"></asp:Label>
                </div> 
                <asp:ValidationSummary ID="ValidationSummary1" runat="server"  ValidationGroup="UpdateTrade" />
                <br />
                <br />
                <div class="TradeLable">Date of Union Shift: (yyyy-mm-dd)
                    <asp:RequiredFieldValidator ID="rfvDate" runat="server" ErrorMessage="Please Enter a Valid Date" SetFocusOnError="True" ValidationGroup="UpdateTrade" ControlToValidate="dtTradeTextBox" Text="*"></asp:RequiredFieldValidator>
                    <asp:CustomValidator ID="cvDate" runat="server" ErrorMessage="Please Enter a Valid Date" SetFocusOnError="True" ValidationGroup="UpdateTrade" ControlToValidate="dtTradeTextBox" Text="*"></asp:CustomValidator>
                <br /></div>
                <asp:TextBox ID="dtTradeTextBox" runat="server" Text='<%# Bind("dtTrade") %>'></asp:TextBox>
                <br />
                <br />
                <div class="TradeLable">Platoon:<br /></div>
                <asp:DropDownList ID="ddlPlatoon" runat="server" >
                    <asp:ListItem Selected="True" Text="1" Value="1"></asp:ListItem>
                    <asp:ListItem Text="2" Value="2"></asp:ListItem>
                    <asp:ListItem Text="3" Value="3"></asp:ListItem>
                    <asp:ListItem Text="4" Value="4"></asp:ListItem>
                </asp:DropDownList>
                <br />
                <br />
                <div class="TradeLable">Day/Night Shift:<br /></div> 
                <asp:DropDownList ID="ddlDayNight" runat="server">
                    <asp:ListItem Selected="True" Text="Day" Value="1"></asp:ListItem>
                    <asp:ListItem Text="Night" Value="2"></asp:ListItem>
                </asp:DropDownList>
                <br />
                <br />
                <div class="TradeLable">Full/Half Shift:<br /></div> 
                <div class="greyText">
                    This indicates if an entire or partial shift is needed to cover the shift. 
                    Please enter needed start or end times in the Shift Details.
                </div>
                <asp:DropDownList ID="ddlHalf" runat="server">
                    <asp:ListItem Selected="True" Text="Full Shift" Value="1"></asp:ListItem>
                    <asp:ListItem Text="Half Shift" Value="2"></asp:ListItem>
                </asp:DropDownList>
                <br />
                <br />
                <div class="TradeLable">Hall:<br /></div>
                <asp:DropDownList ID="ddlHall" runat="server" >
                    <asp:ListItem Selected="True" Text="1" Value="1"></asp:ListItem>
                    <asp:ListItem Text="2" Value="2"></asp:ListItem>
                    <asp:ListItem Text="3" Value="3"></asp:ListItem>
                    <asp:ListItem Text="4" Value="4"></asp:ListItem>
                    <asp:ListItem Text="5" Value="5"></asp:ListItem>
                    <asp:ListItem Text="6" Value="6"></asp:ListItem>
                    <asp:ListItem Text="7" Value="7"></asp:ListItem>
                    <asp:ListItem Text="8" Value="8"></asp:ListItem>
                    <asp:ListItem Text="9" Value="9"></asp:ListItem>
                    <asp:ListItem Text="10" Value="10"></asp:ListItem>
                    <asp:ListItem Text="11" Value="11"></asp:ListItem>
                    <asp:ListItem Text="12" Value="12"></asp:ListItem>
                    <asp:ListItem Text="13" Value="13"></asp:ListItem>
                    <asp:ListItem Text="14" Value="14"></asp:ListItem>
                    <asp:ListItem Text="15" Value="15"></asp:ListItem>
                    <asp:ListItem Text="16" Value="16"></asp:ListItem>
                    <asp:ListItem Text="17" Value="17"></asp:ListItem>
                    <asp:ListItem Text="18" Value="18"></asp:ListItem>
                    <asp:ListItem Text="19" Value="19"></asp:ListItem>
                    <asp:ListItem Text="20" Value="20"></asp:ListItem>
                    <asp:ListItem Text="22" Value="22"></asp:ListItem>
                    <asp:ListItem Text="23" Value="23"></asp:ListItem>
                    <asp:ListItem Text="24" Value="24"></asp:ListItem>
                    <asp:ListItem Text="25" Value="25"></asp:ListItem>
                    <asp:ListItem Text="26" Value="26"></asp:ListItem>
                </asp:DropDownList>
                <br />
                <br />
                <div class="TradeLable">Shift Status:<br /></div>
                <div class="greyText">
                    Active = Shift is availalble to be booked by a member<br />
                    Reserved = Shift is booked by a member and is awating an email confirmation 
                    Confirmed = Shift is booked and confirmed as is now considered complete
                </div>
                <asp:DropDownList ID="ddlStatus" runat="server" >
                    <asp:ListItem Selected="True" Text="Active" Value="1"></asp:ListItem>
                    <asp:ListItem Text="Reserved" Value="2"></asp:ListItem>
                    <asp:ListItem Text="Confirmed" Value="3"></asp:ListItem>
                </asp:DropDownList>
                <br />
                <br />
                <div class="TradeLable">Shift Availability - Private or Public:
                    <asp:CustomValidator ID="cvPrivate" runat="server" ErrorMessage="Please Choose a Union Member" SetFocusOnError="true" ValidateEmptyText="True" ControlToValidate="ddlPrivate" ValidationGroup="UpdateTrade" Text="*"></asp:CustomValidator>
                <br /></div> 
                <div class="greyText">
                    Public Shifts are avilable to all members. Private shifts are only available to 
                    one specified member.</div>
                <asp:DropDownList ID="ddlPrivate" runat="server" >
                    <asp:ListItem Selected="True" Text="Public" Value="1"></asp:ListItem>
                    <asp:ListItem Text="Private" Value="2"></asp:ListItem>
                </asp:DropDownList>
                <br />
                <br />
                <div class="TradeLable">Shift Owner:<br /></div> 
                <div class="greyText">This is the executive or member who needs the shift covered</div>
                <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("chrOwner") %>' Width="150px"></asp:TextBox>
                <br />
                <br />
                <div class="TradeLable">Specified Member:<br /></div> 
                <div class="greyText">
                    If shift is private, Select the member from the list who is going to take the 
                    shift. Once the insert button in clicked, they will recieve an email that they 
                    will need to open and confirm in order for the shift to get confirmed. This 
                    union shift will be marked &quot;Reserved&quot; when it is inserted if a memeber has been 
                    selected. Otherwise do not select a member, leave it marked &quot;Available to All.&quot;</div>
                <asp:DropDownList ID="ddlMember" runat="server" AppendDataBoundItems="True" 
                    DataSourceID="LinqDataMember" DataTextField="chrName" DataValueField="UserId" >
                    <asp:ListItem Text="Available to All" Value="0"></asp:ListItem> 
                </asp:DropDownList>            
                <br /><br />
                
                <div class="TradeLable">Reason for Shift:<br /></div> 
                <div class="greyText">
                    Used for Administrative tracking purposes. This information is not seen by the 
                    membership.</div>                
                <asp:TextBox ID="TextBox3" runat="server" 
                    Text='<%# Bind("chrReason") %>' Width="400px"></asp:TextBox>
                <br />
                <br />
                <div class="TradeLable">Shift Details:<br /></div> 
                <div class="greyText">
                    Used for clarity. This information WILL be seen by the membership. For example, 
                    if it is a half shift, you could put the needed start or end time of the shift 
                    here.</div>                
                <asp:TextBox ID="TextBox4" runat="server" 
                    Text='<%# Bind("chrDetails") %>' TextMode="MultiLine" Width="400px" Height="100px"></asp:TextBox>
                <br />
                <br /> 
                <asp:Button ID="btnUpdate" runat="server" Text="Update" CommandArgument='<%# Eval("idTrade") %>' CommandName="Update" ValidationGroup="UpdateTrade" />           
                <asp:Button ID="btnCancel" runat="server" Text="Cancel" PostBackUrl="~/Executive/Trade.aspx" />

            </ItemTemplate>
            
            <EmptyDataTemplate>
                <div class="ItaliBold">There was no union shift record retrieved.  If you have reached this page in error, use the link above to return to the trade management form.</div>
            </EmptyDataTemplate>
            
            <LayoutTemplate>
                <div ID="itemPlaceholderContainer" runat="server" style="">
                    <span ID="itemPlaceholder" runat="server" />
                </div>
                <div style="">
                </div>
            </LayoutTemplate>
            
            
        </asp:ListView>

Open in new window


background code in vb where I use linq to get one record based on query string and assign appropriate dropdownlist values:
 
Protected Sub ListView1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles ListView1.ItemDataBound

        Dim db As New EFFU_LINQDataContext

        Dim idTrade = New Guid(Request.QueryString("tid").ToString)

        Dim myResults = From myTable In db.Trades Where myTable.idTrade = idTrade

        For Each myRow In myResults
            Dim ddlPlatoon As DropDownList = CType(e.Item.FindControl("ddlPlatoon"), DropDownList)
            Dim ddlDayNight As DropDownList = CType(e.Item.FindControl("ddlDayNight"), DropDownList)
            Dim ddlHalf As DropDownList = CType(e.Item.FindControl("ddlHalf"), DropDownList)
            Dim ddlHall As DropDownList = CType(e.Item.FindControl("ddlHall"), DropDownList)
            Dim ddlStatus As DropDownList = CType(e.Item.FindControl("ddlStatus"), DropDownList)
            Dim ddlPrivate As DropDownList = CType(e.Item.FindControl("ddlPrivate"), DropDownList)
            Dim ddlMember As DropDownList = CType(e.Item.FindControl("ddlMember"), DropDownList)

            ddlPlatoon.SelectedValue = myRow.intPlatoon
            ddlDayNight.SelectedValue = myRow.intDayNight
            ddlHalf.SelectedValue = myRow.intHalf
            ddlHall.SelectedValue = myRow.intHall
            ddlStatus.SelectedValue = myRow.intStatus
            ddlPrivate.SelectedValue = myRow.intPrivate

            Dim myString As String = String.Empty
            Dim myGuid As Guid = Nothing
            Try                
                myGuid = New Guid(myRow.idMember.ToString)
                myString = myGuid.ToString
            Catch ex As Exception
                '' error means value is not GUID, therfore no member selected
                myString = 0
            End Try

            ddlMember.SelectedValue = myString

        Next

    End Sub

Open in new window


The drop down list That I can not assign is "ddlMember".  Does anyone know why this one ddl will not accept asignment of a selected value?

0
Comment
Question by:jordanking
3 Comments
 
LVL 11

Expert Comment

by:srikanthreddyn143
ID: 35074100
Please make sure ddlmember.Datasource has rows and your userid is there in the dropdownlist.
0
 
LVL 1

Author Comment

by:jordanking
ID: 35074594
i am note sure how to test for rows.  When i insert a breakpoint in the ItemDataBound event, it does not trigger when i debug, So i am having trouble stepping through the code.

When the page fully renders the ddlMember has rows with the id.  
0
 
LVL 15

Accepted Solution

by:
rajeeshmca earned 500 total points
ID: 35079210
Hi jordanking,

The issue is - before the dropdown is rendered the selected value property is assigned inside the rowdatabound event...


The solution is before u assign the selected value property of the dropdown, bind the drop down in the rowdatabound event like....

ddlMember.DataBind()
ddlMember.SelectedValue = myString


0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
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.
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

947 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

23 Experts available now in Live!

Get 1:1 Help Now