Avatar of WNottsC
WNottsC
Flag for Afghanistan asked on

How to set the dropdownlist title attibute to a value from a database

I currently have an asp.net webform language vb.net

I have a dropdownlist that is databound to a SQL Server Stored Procedure

I have managed to get a tooltip per data item as shown below.  However this shows the "Title" attibute which is just the same as the 'DataTextField' which is a SoftwareCategory Column   what I want this to be is an additional Column called SoftwareCategoryDescription.

I hope this makes sense



<asp:DropDownList ID="SoftwareTypeDropDownList0" runat="server"
                                                                AppendDataBoundItems="True" CssClass="IncidentDropDownList"
                                                                DataSourceID="SqlSoftwareCategory" DataTextField="SoftwareCategory"
                                                                DataValueField="SoftwareCategoryID"
                                                                SelectedValue='<%# Bind("SoftwareCategoryID") %>'
                                                                ondatabound="SoftwareTypeDropDownList0_DataBound">
                                                                <asp:ListItem Text="" Value=""></asp:ListItem>
                                                            </asp:DropDownList>


Protected Sub SoftwareTypeDropDownList0_DataBound(sender As Object, e As EventArgs)
        Dim ddl As DropDownList = TryCast(sender, DropDownList)

        If ddl IsNot Nothing Then

            For Each _listItem As ListItem In ddl.Items

'Either one of these two work I have just commented out one to show what I have tried
                '                _listItem.Attributes.Add("onmouseover", "this.title=this.options[this.selectedIndex]")
                _listItem.Attributes.Add("title", _listItem.Text)
 
           Next


        End If
    End Sub
ASP.NET.NET Programming

Avatar of undefined
Last Comment
WNottsC

8/22/2022 - Mon
Rouchie

You need to create each listitem on the server-side rather than declare it in your initial control.

<asp:DropDownList ID="SoftwareTypeDropDownList0" runat="server"  />

Open in new window


Then in code behind, assuming your database data comes in DataTable format...:

For Each dr As DataRow In myDataTable.Rows
	Dim li As New ListItem
	li.Value = "SoftwareCategoryID"
	li.Text = "SoftwareCategoryID"
	li.Attributes.Add("title", dr.Item("SoftwareCategoryDescription").ToString)
	SoftwareTypeDropDownList0.Items.Add(li)
Next

Open in new window

WNottsC

ASKER
I currently already have it set as this:

<asp:DropDownList ID="SoftwareTypeDropDownList0" runat="server"  />

I am not sure what you mean by Datatable format

The DropDownlist is currently connected to a datasource DataSourceID="SqlSoftwareCategory"

this is then as follows
asp:SqlDataSource ID="SqlSoftwareCategory" runat="server"
                                ConnectionString="<%$ ConnectionStrings:ITHappensConnectionString %>"
                                SelectCommand="spSoftwareCat" SelectCommandType="StoredProcedure">
                            </asp:SqlDataSource>

which is as follows

SELECT     TOP (100) PERCENT SoftwareCategoryID, SoftwareCategory, SoftwareCategoryDesc
FROM         dbo.SoftwareCategory
GROUP BY SoftwareCategory, SoftwareCategoryID, SoftwareCategoryDesc
ORDER BY SoftwareCategory
ASKER CERTIFIED SOLUTION
Rouchie

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
WNottsC

ASKER
I have done this but I am getting an
"SoftwareTypeDropDownList0 is not declared. It may be inaccessible due to protection level" on the following line

SoftwareTypeDropDownList0.Items.Add(li)
Your help has saved me hundreds of hours of internet surfing.
fblack61
Rouchie

Is your DropDownList inside a Data-repeating control, like a GridView or Repeater?
WNottsC

ASKER
its inside a formview
WNottsC

ASKER
It asked if I wanted to fix it and it created the following

Private Function SoftwareTypeDropDownList0() As Object
        Throw New NotImplementedException
    End Function
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
Rouchie

Ignore that 'fix'.  The problem is that you have to locate the DropDownList inside the FormView, and then bind to it.

Here is the revised code.  Keep in mind that you will only be able to successfully execute this sub when the FormView is in a mode whereby the DropDownList is actually visible on-screen

	Protected Sub PopulateDropDownList()
		Dim cmd As New SqlCommand
		cmd.Connection = New SqlConnection(ConfigurationManager.ConnectionStrings("ITHappensConnectionString").ConnectionString)
		cmd.CommandType = CommandType.StoredProcedure
		cmd.CommandText = "spSoftwareCat"
		Dim r As SqlDataReader
		Dim dt As New DataTable
		cmd.Connection.Open()
		r = cmd.ExecuteReader(CommandBehavior.CloseConnection)
		dt.Load(r)
		cmd.Dispose()
		cmd.Dispose()
		For Each dr As DataRow In dt.Rows
			Dim li As New ListItem
			li.Value = "SoftwareCategoryID"
			li.Text = "SoftwareCategory"
			li.Attributes.Add("title", dr.Item("SoftwareCategoryDescription").ToString)
			Dim SoftwareTypeDropDownList0 As DropDownList = FormView1.FindControl("SoftwareTypeDropDownList0")
			If SoftwareTypeDropDownList0 IsNot Nothing Then
				SoftwareTypeDropDownList0.Items.Add(li)
			End If
		Next
	End Sub

Open in new window

WNottsC

ASKER
thats great does not seem to be an issue so far.

I am very sorry and really appreciate the help (not a great programmer).  What is the next step?
Rouchie

I'm assuming that you've probably got other server-side code with the form.  We need to get that Sub to run when the Form goes into Edit or Insert mode.  I am ASSUMING that those two modes are where your DropDownList will appear?

In that case, add this code (changing FormView1 to be the ID of your actual FormView):

Protected Sub FormView1_ModeChanging(sender As Object, e As System.Web.UI.WebControls.FormViewModeEventArgs) Handles FormView1.ModeChanging
	If e.NewMode = FormViewMode.Edit OrElse e.NewMode = FormViewMode.Insert Then
		PopulateDropDownList()
	End If
End Sub

Open in new window

I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck
WNottsC

ASKER
ok all done and no errors so far
Rouchie

There's nothing more to do.  if the dropdownlist is not populating, then we've missed something.  Can you post the full code of your FormView so I can see where your DropDownList is placeD?
WNottsC

ASKER
Sorry about the amount of code  The page is displaying but when I click on the dropdownlist it has nothing it this is the first problem.  I then need this to display the tooltip from the database

<asp:FormView ID="SelectedSoftwareFormView" runat="server" DataKeyNames="SoftwareID"
                                DataSourceID="SqlSoftwareSelected" CssClass="SelectAssetForm">
                                <EditItemTemplate>
                                    <table style="width: 700px">
                                    <tr>
                                        <td colspan="4">
                                            <h1><asp:Label ID="NameLabel" runat="server" Text='<%# Bind("Name") %>' />   </h1>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <img alt="" src="Images/AssetImages/msos.jpg"
                                                style="width: 100px; height: 100px" align="top" /></td>
                                        <td colspan="3">
                                            <table>
                                                <tr>
                                                    <td>
                                                        <b>Category:</b>
                                                        &nbsp;
                                                        </td>
                                                    <td colspan="4">
                                                        <asp:DropDownList ID="SoftwareTypeDropDownList0" runat="server"
                                                            AppendDataBoundItems="True" CssClass="IncidentDropDownList"
                                                            DataSourceID="SqlSoftwareCategory" DataTextField="SoftwareCategory"
                                                            DataValueField="SoftwareCategoryID"
                                                            SelectedValue='<%# Bind("SoftwareCategoryID") %>'>
                                                            <asp:ListItem Text="" Value=""></asp:ListItem>
                                                        </asp:DropDownList>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <b>Tags:</b>
                                                        &nbsp;
                                                        </td>
                                                    <td colspan="4">
                                                        &nbsp;</td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <b>Description:</b>
                                                        &nbsp;
                                                        </td>
                                                    <td colspan="4">
                                                        &nbsp;</td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <b>Manufacturer:</b></td>
                                                    <td colspan="4">
                                                        <asp:TextBox ID="CompanyProducedTextBox" runat="server"
                                                            Text='<%# Bind("CompanyProduced") %>' Width="373px" />
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <b>Operating system:</b>
                                                        &nbsp;
                                                        </td>
                                                    <td>
                                                        <asp:DropDownList ID="SoftwareTypeDropDownList1" runat="server"
                                                            AppendDataBoundItems="True" CssClass="IncidentDropDownList"
                                                            DataSourceID="SqlOSType" DataTextField="OSType" DataValueField="SoftwareOSID"
                                                            SelectedValue='<%# Bind("OSTypeID") %>'>
                                                            <asp:ListItem Text="" Value=""></asp:ListItem>
                                                        </asp:DropDownList>
                                            </td>
                                                    <td style="width: 20px">
                                                        &nbsp;</td>
                                                    <td>
                                                        <b>Version:</b></td>
                                                    <td>
                                                        <asp:TextBox ID="VersionTextBox" runat="server" Text='<%# Bind("Version") %>' />
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <b>Type:</b></td>
                                                    <td>
                                                        <asp:DropDownList ID="SoftwareTypeDropDownList" runat="server"
                                                            AppendDataBoundItems="True" CssClass="IncidentDropDownList"
                                                            DataSourceID="sqlSoftwareType" DataTextField="SoftwareType" DataValueField="SoftwareTypeID"
                                                            SelectedValue='<%# Bind("SoftwareTypeID") %>'>
                                                            <asp:ListItem Text="" Value=""></asp:ListItem>
                                                        </asp:DropDownList>
                                                    </td>
                                                    <td style="width: 20px">
                                                        &nbsp;</td>
                                                    <td>
                                                        &nbsp;</td>
                                                    <td>
                                                        <asp:TextBox ID="ApplicationIDTextBox" runat="server" Text='<%# Bind("ApplicationID") %>' Visible="False" />
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                    <b>Status:</b></td>
                                                    <td>
                                                        <asp:DropDownList ID="SoftwareTypeDropDownList2" runat="server"
                                                            AppendDataBoundItems="True" CssClass="IncidentDropDownList"
                                                            DataSourceID="SqlSoftwareStatus" DataTextField="SoftwareStatus"
                                                            DataValueField="SoftwareStatusID" SelectedValue='<%# Bind("SoftwareStatusID") %>'>
                                                            <asp:ListItem Text="" Value=""></asp:ListItem>
                                                        </asp:DropDownList>
                                                    </td>
                                                    <td>
                                                        &nbsp;</td>
                                                    <td>
                                                        &nbsp;
                                                    </td>
                                                    <td>
                                                        &nbsp;
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <b>Bundle Contents:</b></td>
                                                    <td colspan="4">
                                                        <asp:Label ID="PONumberLabel0" runat="server" Text='<%# Bind("PONumber") %>' />
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        &nbsp;</td>
                                                    <td>
                                                        &nbsp;</td>
                                                    <td>
                                                        &nbsp;</td>
                                                    <td>
                                                        &nbsp;</td>
                                                </tr>
                                            </table>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Requested By:</b>&nbsp;</td>
                                        <td>
                                            <asp:TextBox ID="PersonRequestedTextBox" runat="server"
                                                Text='<%# Bind("PersonRequested") %>' />
                                        </td>
                                        <td>
                                            &nbsp;<b>PO number:</b></td>
                                        <td>
                                            <asp:Label ID="PONumberLabel" runat="server" Text='<%# Bind("PONumber") %>' />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Requested Area:</b>&nbsp;</td>
                                        <td>
                                            <asp:TextBox ID="AreaRequestedTextBox" runat="server"
                                                Text='<%# Bind("AreaRequested") %>' />
                                        </td>
                                        <td>
                                            <b>Supplier:</b></td>
                                        <td>
                                            <asp:TextBox ID="CompanyPurchasedTextBox" runat="server"
                                                Text='<%# Bind("CompanyPurchased") %>' />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Requested Date:</b></td>
                                        <td>
                                            <asp:TextBox ID="DateofAcquisitionTextBox" runat="server"
                                                Text='<%# Bind("DateofAcquisition") %>' />
                                        </td>
                                        <td>
                                            <b>Purchase Date:</b></td>
                                        <td>
                                            &nbsp;</td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            &nbsp;</td>
                                        <td colspan="3">
                                            &nbsp;</td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Download:</b></td>
                                        <td colspan="3">
                                            <asp:CheckBox ID="DownloadCheckBox" runat="server"
                                                Checked='<%# Bind("Download") %>' />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Electronic Location:</b>&nbsp;&nbsp;</td>
                                        <td colspan="3">
                                            <asp:TextBox ID="SharenameTextBox" runat="server"
                                                Text='<%# Bind("Sharename") %>' />
                                        </td>
                                    </tr>
                                        <tr>
                                            <td valign="top">
                                                <b>Media Location:</b></td>
                                            <td colspan="3">
                                                <asp:TextBox ID="LocationTextBox" runat="server" Text='<%# Bind("Location") %>'
                                                    Width="478px" />
                                            </td>
                                        </tr>
                                </table>
                                    <br />
                                    <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True"
                                        CommandName="Update" Text="Update" />
                                    &nbsp;&nbsp;&nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server"
                                        CausesValidation="False" CommandName="Cancel" Text="Cancel" />
                                    <br />
                                </EditItemTemplate>
                                <InsertItemTemplate>
                                    <table>
                                        <tr>
                                            <td>                                                
                                                 <table style="width:100%;">
                                                        <tr>
                                                            <td>
                                                                <h1>Title:</h1>
                                                            </td>
                                                            <td style="vertical-align: bottom;">
                                                                <asp:UpdatePanel ID="UpdatePanel13" runat="server">
                                                                    <ContentTemplate>
                                                                        <asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>'
                                                                            Width="473px" />
                                                                    </ContentTemplate>
                                                                </asp:UpdatePanel>
                                                            </td>
                                                            <td style="vertical-align: bottom;">
                                                                <asp:Button ID="GetFromSnowButton" runat="server" Text="Get from snow"
                                                                    Font-Size="Small" />
                                                                <cc1:ModalPopupExtender ID="GetFromSnowButton_ModalPopupExtender"
                                                                    runat="server" BackgroundCssClass="modalBackground"
                                                                    CancelControlID="CancelUploadButton" DynamicServicePath="" Enabled="True"
                                                                    PopupControlID="PopUpPanel" TargetControlID="GetFromSnowButton">
                                                                </cc1:ModalPopupExtender>
                                                            </td>
                                                        </tr>
                                                </table>
                                            </td>
                                        </tr>
                                    </table>
                                    <div class="SmallTextDiv">
                                    <table>
                                        <tr>
                                            <td colspan="4">
                                                <table>
                                                    <tr>
                                                        <td>
                                                            <b>Category:</b>
                                                        </td>
                                                        <td colspan="4">
                                                            <div>
                                                            <asp:DropDownList ID="SoftwareTypeDropDownList0" runat="server"
                                                                AppendDataBoundItems="True" CssClass="IncidentDropDownList"
                                                                SelectedValue='<%# Bind("SoftwareCategoryID") %>'
                                                                ondatabound="SoftwareTypeDropDownList0_DataBound" >
                                                                <asp:ListItem Text="" Value=""></asp:ListItem>
                                                            </asp:DropDownList>
                                                            </div>
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <td>
                                                            <b>Tags:</b></td>
                                                        <td colspan="4">
                                                            &nbsp;</td>
                                                    </tr>
                                                    <tr>
                                                        <td>
                                                            <b>Description:</b></td>
                                                        <td colspan="4">
                                                            &nbsp;</td>
                                                    </tr>
                                                    <tr>
                                                        <td>
                                                            <b>Manufacturer:</b></td>
                                                        <td colspan="4">
                                                            <asp:UpdatePanel ID="UpdatePanel14" runat="server">
                                                                <ContentTemplate>
                                                                    <asp:TextBox ID="CompanyProducedTextBox" runat="server"
                                                                        Text='<%# Bind("CompanyProduced") %>' Width="373px" />
                                                                </ContentTemplate>
                                                            </asp:UpdatePanel>
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <td>
                                                            <b>Operating system:</b></td>
                                                        <td>
                                                            <asp:DropDownList ID="SoftwareTypeDropDownList1" runat="server"
                                                                AppendDataBoundItems="True" CssClass="IncidentDropDownList"
                                                                DataSourceID="SqlOSType" DataTextField="OSType" DataValueField="SoftwareOSID"
                                                                SelectedValue='<%# Bind("OSTypeID") %>'>
                                                                <asp:ListItem Text="" Value=""></asp:ListItem>
                                                            </asp:DropDownList>
                                                        </td>
                                                        <td style="width: 20px">
                                                            &nbsp;</td>
                                                        <td>
                                                            <b>Version:</b></td>
                                                        <td class="style4">
                                                            <asp:TextBox ID="VersionTextBox0" runat="server"
                                                                Text='<%# Bind("Version") %>' />
                                                            </td>
                                                    </tr>
                                                    <tr>
                                                        <td>
                                                            <b>Type:</b> &nbsp;
                                                        </td>
                                                        <td>
                                                            <asp:DropDownList ID="SoftwareTypeDropDownList" runat="server"
                                                                AppendDataBoundItems="True" CssClass="IncidentDropDownList"
                                                                DataSourceID="sqlSoftwareType" DataTextField="SoftwareType" DataValueField="SoftwareTypeID"
                                                                SelectedValue='<%# Bind("SoftwareTypeID") %>'>
                                                                <asp:ListItem Text="" Value=""></asp:ListItem>
                                                            </asp:DropDownList>
                                                        </td>
                                                        <td style="width: 20px">
                                                            &nbsp;</td>
                                                        <td>
                                                            &nbsp;</td>
                                                        <td class="style4">
                                                            &nbsp;
                                                            </td>
                                                    </tr>
                                                    <tr>
                                                        <td>
                                                            <b>Status:</b></td>
                                                        <td>
                                                            <asp:DropDownList ID="SoftwareTypeDropDownList2" runat="server"
                                                                AppendDataBoundItems="True" CssClass="IncidentDropDownList"
                                                                DataSourceID="SqlSoftwareStatus" DataTextField="SoftwareStatus"
                                                                DataValueField="SoftwareStatusID"
                                                                SelectedValue='<%# Bind("SoftwareStatusID") %>'>
                                                                <asp:ListItem Text="" Value=""></asp:ListItem>
                                                            </asp:DropDownList>
                                                        </td>
                                                        <td style="width: 20px">
                                                            &nbsp;</td>
                                                        <td>
                                                            &nbsp;</td>
                                                        <td class="style4">
                                                            &nbsp;
                                                            </td>
                                                    </tr>
                                                    <tr>
                                                        <td>
                                                            <b>Bundle Contents:</b></td>
                                                        <td colspan="4">
                                                            &nbsp; &nbsp; </td>
                                                    </tr>
                                                    <tr>
                                                        <td>
                                                            &nbsp;</td>
                                                        <td>
                                                            &nbsp;</td>
                                                        <td>
                                                            &nbsp;</td>
                                                        <td>
                                                            &nbsp;</td>
                                                            <td class="style4">
                                                            &nbsp;
                                                        </td>
                                                    </tr>
                                                </table>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td valign="top">
                                                <b>Requested By:</b>&nbsp;</td>
                                            <td>
                                                <asp:TextBox ID="PersonRequestedTextBox0" runat="server"
                                                    Text='<%# Bind("PersonRequested") %>' />
                                            </td>
                                            <td>
                                                <b>PO number:</b></td>
                                            <td>
                                                <asp:TextBox ID="PONumberLabel" runat="server"
                                                    Text='<%# Bind("PONumber") %>' />
                                            </td>
                                        </tr>
                                        <tr>
                                            <td valign="top">
                                                <b>Requested Area:</b>&nbsp;</td>
                                            <td>
                                                <asp:TextBox ID="AreaRequestedTextBox0" runat="server"
                                                    Text='<%# Bind("AreaRequested") %>' />
                                            </td>
                                            <td>
                                                <b>Supplier:</b>&nbsp;</td>
                                            <td>
                                                <asp:TextBox ID="CompanyPurchasedTextBox0" runat="server"
                                                    Text='<%# Bind("CompanyPurchased") %>' />
                                            </td>
                                        </tr>
                                        <tr>
                                            <td valign="top">
                                                <b>Requested Date:</b></td>
                                            <td>
                                                <asp:TextBox ID="DateofAcquisitionTextBox" runat="server"
                                                    Text='<%# Bind("DateofAcquisition") %>' />
                                            </td>
                                            <td>
                                                <b>Purchase Date:</b></td>
                                            <td>
                                                &nbsp;</td>
                                        </tr>
                                        <tr>
                                            <td valign="top">
                                                &nbsp;</td>
                                            <td>
                                                &nbsp;</td>
                                            <td>
                                                &nbsp;</td>
                                            <td>
                                                &nbsp;</td>
                                        </tr>
                                        <tr>
                                            <td valign="top">
                                                <b>Download:</b>&nbsp;&nbsp;</td>
                                            <td colspan="3">
                                                <asp:CheckBox ID="DownloadCheckBox" runat="server"
                                                    Checked='<%# Bind("Download") %>' />
                                            </td>
                                        </tr>
                                        <tr>
                                            <td valign="top">
                                                <b>Media Location:</b>&nbsp;</td>
                                            <td colspan="3">
                                                <asp:TextBox ID="LocationTextBox" runat="server"
                                                    Text='<%# Bind("Location") %>' Width="478px" />
                                            </td>
                                        </tr>
                                        <tr>
                                            <td valign="top">
                                                <b>Electronic Location:</b>&nbsp;&nbsp;</td>
                                            <td colspan="3">
                                                <asp:TextBox ID="SharenameTextBox" runat="server"
                                                    Text='<%# Bind("Sharename") %>' Width="478px" />
                                            </td>
                                        </tr>
                                        <tr>
                                            <td colspan="4" valign="top">
                                               
                                            </td>
                                        </tr>
                                    </table>
                                    <br />
                                    <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True"
                                        CommandName="Insert" Text="Insert" />
                                    &nbsp;&nbsp;&nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server"
                                        CausesValidation="False" CommandName="Cancel" Text="Cancel" />
                                </div>
                                </InsertItemTemplate>
                            <ItemTemplate>
                                <table width="650px">
                                    <tr>
                                        <td style="padding-bottom: 10px; vertical-align:middle;">
                                            <h1>
                                                <asp:Label ID="NameLabel" runat="server" Text='<%# Bind("Name") %>' />
                                                -
                                                <asp:Label ID="SoftwareStatusLabel1" runat="server"
                                                    Text='<%# Bind("SoftwareStatus") %>' />
                                            </h1>
                                        </td>
                                        <td valign="middle" width="25px">
                                            &nbsp;</td>
                                    </tr>
                                    </table>
                                    <table>                                    
                                    <tr>
                                        <td valign="top">
                                            <img alt="" src="Images/AssetImages/box-win.png"
                                                style="width: 100px; height: 100px" align="top" /></td>
                                        <td colspan="3">
                                            <table>
                                                <tr>
                                                    <td>
                                                        <b>Category:</b></td>
                                                    <td colspan="2">
                                                        <asp:Label ID="SoftwareCategoryLabel" runat="server"
                                                            Text='<%# Bind("SoftwareCategory") %>' />
                                                    </td>
                                                    <td>
                                                        &nbsp;</td>
                                                    <td>
                                                        &nbsp;</td>
                                                    <td colspan="2">
                                                        <asp:Label ID="ApplicationIDLabel" runat="server"
                                                            Text='<%# Bind("ApplicationID") %>' Visible="False" />
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <b>Tags:</b></td>
                                                    <td colspan="6">
                                                        &nbsp;</td>
                                                </tr>
                                                <tr>
                                                    <td valign="top">
                                                        <b>Description:</b></td>
                                                    <td colspan="6">
                                                       
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td valign="top">
                                                        <b>Manufacturer:</b></td>
                                                    <td colspan="6">
                                                       
                                                        <asp:Label ID="CompanyProducedLabel" runat="server"
                                                            Text='<%# Bind("CompanyProduced") %>' />
                                                       
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td class="style2">
                                                        <b>Operating system:</b>
                                                        &nbsp;
                                                        </td>
                                                    <td class="style2">
                                                        <asp:Label ID="OSTypeLabel" runat="server" Text='<%# Bind("OSType") %>' />
                                                    </td>
                                                    <td colspan="2" class="style3">
                                                        </td>
                                                    <td colspan="2" class="style2">
                                                        <b>Version:</b></td>
                                                    <td class="style2">
                                                        &nbsp;
                                                        <asp:Label ID="VersionLabel" runat="server" Text='<%# Bind("Version") %>' />
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                    <b>Type:</b></td>
                                                    <td colspan="6">
                                                        <asp:Label ID="SoftwareTypeLabel" runat="server" Text='<%# Bind("SoftwareType") %>' />
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                    <b>Bundle Contents:</b></td>
                                                    <td colspan="6">
                                                        &nbsp; &nbsp;
                                                    </td>
                                                </tr>
                                            </table>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Requested By:</b>&nbsp;</td>
                                        <td>
                                            <asp:Label ID="RequestedByLabel" runat="server" Text='<%# Bind("PersonRequested") %>' />
                                        </td>
                                        <td>
                                            <b>PO number:</b></td>
                                        <td>
                                            <asp:HyperLink ID="PONumberLabel" runat="server"
                                                NavigateUrl='<%#"AssetOrderDetails.aspx?OrderID=" & Eval("PONumber").ToString %>'
                                                Text='<%# Bind("PONumber") %>' />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Requested Area:</b>&nbsp;</td>
                                        <td>
                                            <asp:Label ID="AreaRequestedLabel" runat="server" Text='<%# Bind("AreaRequested") %>' /></td>
                                        <td>
                                            <b>Supplier: </b>
                                        &nbsp;</td>
                                        <td>
                                            <asp:Label ID="CompanyPurchasedLabel" runat="server"
                                                Text='<%# Bind("CompanyPurchased") %>' />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Requested Date:</b>&nbsp;</td>
                                        <td>
                                            <asp:Label ID="DateofAcquisition" runat="server"
                                                Text='<%# Bind("DateofAcquisition") %>' />
                                        </td>
                                        <td>
                                            <b>Order Date:</b></td>
                                        <td>
                                            &nbsp;</td>
                                    </tr>
                                    <tr>
                                        <td></td>
                                        <td></td>
                                        <td></td>
                                        <td></td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Download:</b></td>
                                        <td colspan="3">
                                            <asp:Label ID="DownloadLabel" runat="server" Text='<%# Bind("Download") %>' />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Electronic Location:</b></td>
                                        <td colspan="3">
                                            <asp:Label ID="SharenameLabel" runat="server" Text='<%# Bind("Sharename") %>' />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td valign="top">
                                            <b>Media Location:</b></td>
                                        <td colspan="3">
                                            <asp:Label ID="LocationLabel" runat="server" Text='<%# Bind("Location") %>' />
                                        </td>
                                    </tr>
                                </table>
                                &nbsp;
                            </ItemTemplate>
                            </asp:FormView>
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
Rouchie

You haven't changed your DropDownLists as in my earlier post!

All this....
<asp:DropDownList ID="SoftwareTypeDropDownList0" runat="server" AppendDataBoundItems="True" CssClass="IncidentDropDownList" DataSourceID="SqlSoftwareCategory" DataTextField="SoftwareCategory" DataValueField="SoftwareCategoryID" SelectedValue='<%# Bind("SoftwareCategoryID") %>'>
										<asp:ListItem Text="" Value=""></asp:ListItem>
									</asp:DropDownList>

Open in new window


Should be just this, because we are doing all the rest manually:
<asp:DropDownList ID="SoftwareTypeDropDownList0" runat="server" CssClass="IncidentDropDownList" />

Open in new window

WNottsC

ASKER
I am now getting the drop down box as if there is something there but it is empty
Rouchie

Please answer the following to help me out...

1) Is your DropDownList only appearing in EDIT and INSERT modes
2) Do you have code to make the FormView change modes?
3) Is the SQL code to grab the database data actually running (you can verify this using SQL Profiler)?
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
WNottsC

ASKER
1) yes the DropDownList only appears in edit and insert modes

2) Yes

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            checkUserHasRights()
            CType(Master, ITHappens).setupApp()
            setMode()          
        End If
    End Sub


    Private Sub setMode()
        If Request.QueryString("SoftwareID") = Nothing Then
            SelectedSoftwareFormView.ChangeMode(FormViewMode.Insert)
        Else
            SelectedSoftwareFormView.ChangeMode(FormViewMode.ReadOnly)
        End If
    End Sub
   
and the one you asked me to setup...

Protected Sub SelectedSoftwareFormView_ModeChanging(sender As Object, e As System.Web.UI.WebControls.FormViewModeEventArgs) Handles SelectedSoftwareFormView.ModeChanging
        If e.NewMode = FormViewMode.Edit OrElse e.NewMode = FormViewMode.Insert Then
            PopulateDropDownList()
        End If
    End Sub

3)  it does not look as if it is running

would it be useful to create a brand new blank  web form to make sure all the code works without all the other parts affecting it?
Rouchie

After you call SetMode() is there another call to get the data, or is the FormView already populated at that point?
WNottsC

ASKER
I do not think there is another call to get the data
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
WNottsC

ASKER
does this not need to be bound to a fiueld in some  way?

SelectedValue='<%# Bind("OSTypeID") %>'>
Rouchie

So when in your order of events above does the data get loaded into the FormView?  You have a Sub called setMode().  I need to know if the data is loaded after SetMode or before?
This is because when SetMode runs, we could put our DropDownList logic into that Sub.

In fact, let's just try it and see...

    Private Sub setMode()
        If Request.QueryString("SoftwareID") = Nothing Then
            SelectedSoftwareFormView.ChangeMode(FormViewMode.Insert)
        Else
            SelectedSoftwareFormView.ChangeMode(FormViewMode.ReadOnly)
		Dim cmd As New SqlCommand
		cmd.Connection = New SqlConnection(ConfigurationManager.ConnectionStrings("ITHappensConnectionString").ConnectionString)
		cmd.CommandType = CommandType.StoredProcedure
		cmd.CommandText = "spSoftwareCat"
		Dim r As SqlDataReader
		Dim dt As New DataTable
		cmd.Connection.Open()
		r = cmd.ExecuteReader(CommandBehavior.CloseConnection)
		dt.Load(r)
		cmd.Dispose()
		cmd.Dispose()
		For Each dr As DataRow In dt.Rows
			Dim li As New ListItem
			li.Value = "SoftwareCategoryID"
			li.Text = "SoftwareCategory"
			li.Attributes.Add("title", dr.Item("SoftwareCategoryDescription").ToString)
			Dim SoftwareTypeDropDownList0 As DropDownList = FormView1.FindControl("SoftwareTypeDropDownList0")
			If SoftwareTypeDropDownList0 IsNot Nothing Then
				SoftwareTypeDropDownList0.Items.Add(li)
			End If
		Next
        End If
    End Sub

Open in new window

Rouchie

Damn stupid mistake sorry...

    Private Sub setMode()
        If Request.QueryString("SoftwareID") = Nothing Then
            SelectedSoftwareFormView.ChangeMode(FormViewMode.ReadOnly)
        Else
            SelectedSoftwareFormView.ChangeMode(FormViewMode.Insert)
		Dim cmd As New SqlCommand
		cmd.Connection = New SqlConnection(ConfigurationManager.ConnectionStrings("ITHappensConnectionString").ConnectionString)
		cmd.CommandType = CommandType.StoredProcedure
		cmd.CommandText = "spSoftwareCat"
		Dim r As SqlDataReader
		Dim dt As New DataTable
		cmd.Connection.Open()
		r = cmd.ExecuteReader(CommandBehavior.CloseConnection)
		dt.Load(r)
		cmd.Dispose()
		cmd.Dispose()
		For Each dr As DataRow In dt.Rows
			Dim li As New ListItem
			li.Value = "SoftwareCategoryID"
			li.Text = "SoftwareCategory"
			li.Attributes.Add("title", dr.Item("SoftwareCategoryDescription").ToString)
			Dim SoftwareTypeDropDownList0 As DropDownList = FormView1.FindControl("SoftwareTypeDropDownList0")
			If SoftwareTypeDropDownList0 IsNot Nothing Then
				SoftwareTypeDropDownList0.Items.Add(li)
			End If
		Next
        End If
    End Sub
                                            

Open in new window

This is the best money I have ever spent. I cannot not tell you how many times these folks have saved my bacon. I learn so much from the contributors.
rwheeler23
Rouchie

>> does this not need to be bound to a fiueld in some  way?

We'll do that bit last once the listitems are loaded in...
WNottsC

ASKER
Ok I was confused

I tried this first....

Private Sub setMode()
        If Request.QueryString("SoftwareID") = Nothing Then
                   SelectedSoftwareFormView.ChangeMode(FormViewMode.ReadOnly)
        Else
                   SelectedSoftwareFormView.ChangeMode(FormViewMode.Insert)
                   .... removed code for read ability ....
        End If
    End Sub

and the who screen was empty just the stuff outside the form view appeared

I then tried

Private Sub setMode()
        If Request.QueryString("SoftwareID") = Nothing Then
                   SelectedSoftwareFormView.ChangeMode(FormViewMode.Insert)
                   .... removed code for read ability ....
        Else
                   SelectedSoftwareFormView.ChangeMode(FormViewMode.ReadOnly)
        End If
    End Sub

This now shows the stuff in the form and the drop down list works but shows "SoftwareCategory" for each entry
Rouchie

Okay we're nearly there.  Sorry it's my fault I'm trying to do my own work at the same time!  :-(

Find these two lines in my code:
li.Value = "SoftwareCategoryID"
li.Text = "SoftwareCategory"

Open in new window


and change them to:

li.Value = dr.Item("SoftwareCategoryID")
li.Text = dr.Item("SoftwareCategory")

Open in new window


Run again and the proper values should be loaded.  Let me know if you see this and we'll do that last bit
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
WNottsC

ASKER
I am sorry to stop you from doing your work, I do appreciate it.

This has worked brilliantly,  the only thing I need now is to have this dropdownlist link back to the original field for when it is installed or it comes up with an error.


the original was something like Text='<%# Bind("SoftwareCategory") %>'
Rouchie

>> I am sorry to stop you from doing your work, I do appreciate it.

Don't worry about it, it's all part of the fun!

>>  the only thing I need now is to have this dropdownlist link back to the original field for when it is installed or it comes up with an error.

Not sure what you mean here.  In your code posts, I only see Text='<%# Bind("SoftwareCategory") %>'  being used in a Label control.  As we haven't touched that, it should work okay?  Can you explain (assume I'm completely stupid) exactly what needs to be linked to what please?
WNottsC

ASKER
In the insert and edit form views we replaced this

<asp:DropDownList
    ID="SoftwareTypeDropDownList0"
    runat="server"
    AppendDataBoundItems="True"
    CssClass="IncidentDropDownList"
    SelectedValue='<%# Bind("SoftwareCategoryID") %>' >                                      
    <asp:ListItem Text="" Value=""></asp:ListItem>
</asp:DropDownList>

With...

<asp:DropDownList ID="SoftwareTypeDropDownList0" runat="server" CssClass="IncidentDropDownList" />

So when it tries to insert the record we get the error

Conversion from type 'DBNull' to type 'String' is not valid.

Protected Sub SqlSoftwareSelected_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlSoftwareSelected.Inserted
Line 82:         Dim newID As String = e.Command.Parameters("@NewSoftwareID").Value
Line 83:         Response.Redirect("SoftwareDetails.aspx?SoftwareID=" + newID)
Line 84:     End Sub

SQL Insert Statement (part of )

ALTER PROCEDURE [dbo].[spSoftwareInsert]
            
     @SoftwareCategoryID int,      
@SoftwareTypeID int,
      @Name nvarchar(50),
      @OSTypeID int,
      @ApplicationID varchar(50),
      @Version nvarchar(30),
Experts Exchange is like having an extremely knowledgeable team sitting and waiting for your call. Couldn't do my job half as well as I do without it!
James Murphy
Rouchie

DropDownList.SelectedValue means that the DropDownList will force the ListItem with the corresponding value to be the selected item.

We can amend our logic so that when the ListItems are loaded into the DropDownList, each is checked against the value of SoftwareCategoryID, but can you tell me where SoftwareCategoryID is being pulled from?
WNottsC

ASKER
do you mean which table ?
WNottsC

ASKER
This is the insert  stored procedure

ALTER PROCEDURE [dbo].[spSoftwareInsert]
            
      @SoftwareCategoryID int,
      @SoftwareTypeID int,
      @Name nvarchar(50),
      @OSTypeID int,
      @ApplicationID varchar(50),
      @Version nvarchar(30),
      @SoftwareStatusID int,
      @PersonRequested nvarchar(50),
      @AreaRequested nvarchar(50),
      @CompanyProduced nvarchar(50),
      @CompanyPurchased nvarchar(50),
      @DateofAcquisition smalldatetime,
      @PONumber nvarchar(30),
      @Location nvarchar(50),
      @Sharename nvarchar(50),
      @Download bit,
      @CreatedBy char(6),
      @NewSoftwareID int OUTPUT
AS
BEGIN

      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;

      DECLARE @SoftwareID int, @TechnicianID int
      
      SELECT @TechnicianID = TechnicianID
      FROM Technician
      WHERE (StaffRefNo = @CreatedBy)

      --Insert Asset
      
      INSERT INTO Software (ApplicationID, SoftwareCategoryID, SoftwareTypeID, Name, OSTypeID, Version, SoftwareStatusID, PersonRequested,
                                          AreaRequested, CompanyProduced, CompanyPurchased, DateofAcquisition, PONumber, Location, Sharename, Download, CreatedBy)
      VALUES (CAST(@ApplicationID AS varbinary(16)), @SoftwareCategoryID, @SoftwareTypeID, @Name, @OSTypeID, @Version, @SoftwareStatusID, @PersonRequested,
                  @AreaRequested, @CompanyProduced, @CompanyPurchased, @DateofAcquisition, @PONumber, @Location, @Sharename, @Download, @TechnicianID)
                  
      SELECT @NewSoftwareID = @@IDENTITY                        
END

this is the code for the formview inserts and updates

<asp:SqlDataSource ID="SqlSoftwareSelected" runat="server"
                                ConnectionString="<%$ ConnectionStrings:ITHappensConnectionString %>"
                                SelectCommand="spSoftwareSelected" SelectCommandType="StoredProcedure"
                                UpdateCommand="spSoftwareUpdate" UpdateCommandType="StoredProcedure"
                                InsertCommand="spSoftwareInsert" InsertCommandType="StoredProcedure">
                                <SelectParameters>
                                    <asp:QueryStringParameter Name="SoftwareID" QueryStringField="SoftwareID" Type="Int32" />
                                </SelectParameters>
                                <UpdateParameters>
                                    <asp:Parameter Name="SoftwareID" Type="Int32" />
                                    <asp:Parameter Name="SoftwareCategoryID" Type="Int32" />
                                    <asp:Parameter Name="SoftwareTypeID" Type="Int32" />
                                    <asp:Parameter Name="Name" Type="String" />
                                    <asp:Parameter Name="OSTypeID" Type="Int32" />
                                    <asp:Parameter Name="ApplicationID" Type="String" />
                                    <asp:Parameter Name="Version" Type="String" />
                                    <asp:Parameter Name="SoftwareStatusID" Type="Int32" />
                                    <asp:Parameter Name="PersonRequested" Type="String" />
                                    <asp:Parameter Name="AreaRequested" Type="String" />
                                    <asp:Parameter Name="CompanyProduced" Type="String" />
                                    <asp:Parameter Name="CompanyPurchased" Type="String" />
                                    <asp:Parameter Name="PONumber" Type="String" />
                                    <asp:Parameter Name="Location" Type="String" />
                                    <asp:Parameter Name="Sharename" Type="String" />
                                    <asp:Parameter Name="Download" Type="Boolean" />
                                    <asp:Parameter Name="LastModifiedBy" Type="String" />
                                </UpdateParameters>
                                <InsertParameters>
                                    <asp:Parameter Name="SoftwareCategoryID" Type="Int32" />
                                    <asp:Parameter Name="SoftwareTypeID" Type="Int32" />
                                    <asp:Parameter Name="Name" Type="String" />
                                    <asp:Parameter Name="OSTypeID" Type="Int32" />
                                    <asp:Parameter Name="ApplicationID" Type="String" />
                                    <asp:Parameter Name="Version" Type="String" />
                                    <asp:Parameter Name="SoftwareStatusID" Type="Int32" />
                                    <asp:Parameter Name="PersonRequested" Type="String" />
                                    <asp:Parameter Name="AreaRequested" Type="String" />
                                    <asp:Parameter Name="CompanyProduced" Type="String" />
                                    <asp:Parameter Name="CompanyPurchased" Type="String" />
                                    <asp:Parameter Name="PONumber" Type="String" />
                                    <asp:Parameter Name="Location" Type="String" />
                                    <asp:Parameter Name="Sharename" Type="String" />
                                    <asp:Parameter Name="Download" Type="Boolean" />
                                    <asp:Parameter Name="CreatedBy" Type="String" />
                                    <asp:Parameter Direction="InputOutput" Name="NewSoftwareID" Type="Int32" />
                                </InsertParameters>
                            </asp:SqlDataSource>
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
Rouchie

In your original code, you had this:

<asp:DropDownList
    ID="SoftwareTypeDropDownList0"
    runat="server"
    AppendDataBoundItems="True"
    CssClass="IncidentDropDownList"
    SelectedValue='<%# Bind("SoftwareCategoryID") %>' >                                     
    <asp:ListItem Text="" Value=""></asp:ListItem>
</asp:DropDownList>

but where was ASP.NET getting the value of SoftwareCategoryID from?  This is needed so that it can identify the corresponding ListItem and select it.
WNottsC

ASKER
I am not sure which section of the asp.net screen or behind code you need.


These are the only one we have

Protected Sub SelectedSoftwareFormView_DataBound(ByVal sender As Object, ByVal e As EventArgs) Handles SelectedSoftwareFormView.DataBound
        If SelectedSoftwareFormView.CurrentMode = FormViewMode.Insert Then
            Dim PONumberLabel As TextBox = CType(SelectedSoftwareFormView.FindControl("PONumberLabel"), TextBox)
            If Not Request.QueryString("OrderID") = Nothing Then
                PONumberLabel.Text = Request.QueryString("OrderID")
            End If
        End If
    End Sub

Protected Sub SqlSoftwareSelected_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlSoftwareSelected.Inserted
        Dim newID As String = e.Command.Parameters("@NewSoftwareID").Value
        Response.Redirect("SoftwareDetails.aspx?SoftwareID=" + newID)
    End Sub

Private Sub SelectedSoftwareFormView_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs) Handles SelectedSoftwareFormView.ItemInserting
        Dim NameTextBox As TextBox = CType(SelectedSoftwareFormView.FindControl("NameTextBox"), TextBox)
        Dim CompanyProducedTextBox As TextBox = Protected Sub SelectedSoftwareFormView_DataBound(ByVal sender As Object, ByVal e As EventArgs) Handles SelectedSoftwareFormView.DataBound
        If SelectedSoftwareFormView.CurrentMode = FormViewMode.Insert Then
            Dim PONumberLabel As TextBox = CType(SelectedSoftwareFormView.FindControl("PONumberLabel"), TextBox)
            If Not Request.QueryString("OrderID") = Nothing Then
                PONumberLabel.Text = Request.QueryString("OrderID")
            End If
        End If
    End Sub

Protected Sub SqlSoftwareSelected_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlSoftwareSelected.Inserted
        Dim newID As String = e.Command.Parameters("@NewSoftwareID").Value
        Response.Redirect("SoftwareDetails.aspx?SoftwareID=" + newID)
    End Sub

Private Sub SelectedSoftwareFormView_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs) Handles SelectedSoftwareFormView.ItemInserting
        Dim NameTextBox As TextBox = CType(SelectedSoftwareFormView.FindControl("NameTextBox"), TextBox)
        Dim CompanyProducedTextBox As TextBox = CType(SelectedSoftwareFormView.FindControl("CompanyProducedTextBox"), TextBox)

        e.Values.Add("CreatedBy", StandardFunctions.GetLoggedInUser())
        e.Values.Add("name", NameTextBox.Text)
        e.Values.Add("ApplicationID", SoftwareTitleSelection1.ApplicationID)
    End Sub

CType(SelectedSoftwareFormView.FindControl("CompanyProducedTextBox"), TextBox)

        e.Values.Add("CreatedBy", StandardFunctions.GetLoggedInUser())
        e.Values.Add("name", NameTextBox.Text)
        e.Values.Add("ApplicationID", SoftwareTitleSelection1.ApplicationID)
    End Sub

can you let me know in any problema
Rouchie

Please try this amended version.

   Private Sub setMode()
		If Request.QueryString("SoftwareID") = Nothing Then
			SelectedSoftwareFormView.ChangeMode(FormViewMode.ReadOnly)
		Else
			SelectedSoftwareFormView.ChangeMode(FormViewMode.Insert)
			Dim cmd As New SqlCommand
			cmd.Connection = New SqlConnection(ConfigurationManager.ConnectionStrings("ITHappensConnectionString").ConnectionString)
			cmd.CommandType = CommandType.StoredProcedure
			cmd.CommandText = "spSoftwareCat"
			Dim r As SqlDataReader
			Dim dt As New DataTable
			cmd.Connection.Open()
			r = cmd.ExecuteReader(CommandBehavior.CloseConnection)
			dt.Load(r)
			cmd.Dispose()
			cmd.Dispose()
			Dim SoftwareTypeDropDownList0 As DropDownList = FormView1.FindControl("SoftwareTypeDropDownList0")
			If SoftwareTypeDropDownList0 IsNot Nothing Then
				For Each dr As DataRow In dt.Rows
					Dim li As New ListItem
					li.Value = dr.Item("SoftwareCategoryID").ToString
					li.Text = dr.Item("SoftwareCategory").ToString
					li.Attributes.Add("title", dr.Item("SoftwareCategoryDescription").ToString)
					SoftwareTypeDropDownList0.Items.Add(li)
				Next
				SoftwareTypeDropDownList0.Items.Add(New ListItem(String.Empty, String.Empty))
			End If
		End If
	End Sub

Open in new window

Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
WNottsC

ASKER
this gives a blank screen with only things outside the formview showing I even switched the code round so If the queryString("SoftwareID") = nothing it goes to the insert and the same thing happened
WNottsC

ASKER
I may be getting this wrong so sorry if I am way off the mark  but the only thin I can see is

The formview has a SQLDATASOURCE for the insert, update and view  I can only assume that    SelectedValue='<%# Bind("SoftwareCategoryID") %>' >  would put the value selected in the dropdownlist into the parameter "SoftwareCategoryID" in the stored procedure.  

However since we have take this line out do we need something on the Drop down list itself
maybe on the SelectedIndexChange event?



the insert parameters are as follows

<InsertParameters>
                                    <asp:Parameter Name="SoftwareCategoryID" Type="Int32" />
                                    <asp:Parameter Name="SoftwareTypeID" Type="Int32" />
                                    <asp:Parameter Name="Name" Type="String" />
                                    <asp:Parameter Name="OSTypeID" Type="Int32" />
                                    <asp:Parameter Name="ApplicationID" Type="String" />
                                    <asp:Parameter Name="Version" Type="String" />
                                    <asp:Parameter Name="SoftwareStatusID" Type="Int32" />
                                    <asp:Parameter Name="PersonRequested" Type="String" />
                                    <asp:Parameter Name="AreaRequested" Type="String" />
                                    <asp:Parameter Name="CompanyProduced" Type="String" />
                                    <asp:Parameter Name="CompanyPurchased" Type="String" />
                                    <asp:Parameter Name="PONumber" Type="String" />
                                    <asp:Parameter Name="Location" Type="String" />
                                    <asp:Parameter Name="Sharename" Type="String" />
                                    <asp:Parameter Name="Download" Type="Boolean" />
                                    <asp:Parameter Name="CreatedBy" Type="String" />
                                    <asp:Parameter Direction="InputOutput" Name="NewSoftwareID" Type="Int32" />
                                </InsertParameters>

This is linked to a stored procedure where he parameters come from

[dbo].[spSoftwareInsert]
            
      @SoftwareCategoryID int,
      @SoftwareTypeID int,
      @Name nvarchar(50),
      @OSTypeID int,
      @ApplicationID varchar(50),
      @Version nvarchar(30),
      @SoftwareStatusID int,
      @PersonRequested nvarchar(50),
      @AreaRequested nvarchar(50),
      @CompanyProduced nvarchar(50),
      @CompanyPurchased nvarchar(50),
      @DateofAcquisition smalldatetime,
      @PONumber nvarchar(30),
      @Location nvarchar(50),
      @Sharename nvarchar(50),
      @Download bit,
      @CreatedBy char(6),
      @NewSoftwareID int OUTPUT
AS
BEGIN

      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;

      DECLARE @SoftwareID int, @TechnicianID int
      
      SELECT @TechnicianID = TechnicianID
      FROM Technician
      WHERE (StaffRefNo = @CreatedBy)

      --Insert Asset
      
      INSERT INTO Software (ApplicationID, SoftwareCategoryID, SoftwareTypeID, Name, OSTypeID, Version, SoftwareStatusID, PersonRequested,
                                          AreaRequested, CompanyProduced, CompanyPurchased, DateofAcquisition, PONumber, Location, Sharename, Download, CreatedBy)
      VALUES (CAST(@ApplicationID AS varbinary(16)), @SoftwareCategoryID, @SoftwareTypeID, @Name, @OSTypeID, @Version, @SoftwareStatusID, @PersonRequested,
                  @AreaRequested, @CompanyProduced, @CompanyPurchased, @DateofAcquisition, @PONumber, @Location, @Sharename, @Download, @TechnicianID)
                  
      SELECT @NewSoftwareID = @@IDENTITY
WNottsC

ASKER
Thanks for all your help I seem to have fixed it

the last little bit was On the FormView1_ItemInserting event

Dim SoftwareTypeDropDownList0 As DropDownList = CType(SelectedSoftwareFormView.FindControl("SoftwareTypeDropDownList0"), DropDownList)

 e.Values.Add("SoftwareCategoryID", SoftwareTypeDropDownList0.SelectedValue)
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
WNottsC

ASKER
The help provide was fantastic and not only fixed the issue but also improved my knowledge of ASP.NET pages
Rouchie

Hi there

Sorry for the late response, I've been in a meeting all morning.

>> Thanks for all your help I seem to have fixed it
>> the last little bit was On the FormView1_ItemInserting event

Great job!  That was the part I was actually missing from your earlier posts...!  Glad you managed to solve it yourself, you're approach is exactly the right way to do this.

One thing you might also consider in the future is not using the SQLDATASOURCE within the page, but constructing the whole thing from code-behind.  This does give you much more control of the values and logic, and isn't much harder than doing it the current way.

Anyway, glad you fixed it - good luck with the rest of your project...!  :-)
WNottsC

ASKER
I just have 4 other dropdownlists on the form I have to do the same for now.  Thanks again for the help
Your help has saved me hundreds of hours of internet surfing.
fblack61