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

WNottsC
WNottsC used Ask the Experts™
on
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
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
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

Author

Commented:
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
Sorry but this won't work.  Accessing the database from within the page HTML (using SqlDataSource as you've done) just dumps the data for the controls to make basic sense out of.    In my opinion Microsoft shouldn't really have enabled it to be used in this way.

You need to access your data entirely in code-behind, so that you can bring the data out of the database into ADO.NET (e.g. a DataTable or DataSet), which can then be modified row-by-row and pushed into your page EXACTLY as you need it.

On the plus side, once you've tried this you will never go back to the 'old' way of doing it.  On the down side, its a little more work, but that's what we're here for...  :-)

First delete the SqlDataSource from your page, then in code-behind, add this Sub that gets the data manually and pushes it into your DropDownList:

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)
			SoftwareTypeDropDownList0.Items.Add(li)
		Next
	End Sub

Open in new window


Don't forget to add the code that actually fires this Sub, e.g. in Page_Load or where you need it
OWASP: Avoiding Hacker Tricks

Learn to build secure applications from the mindset of the hacker and avoid being exploited.

Author

Commented:
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)
Is your DropDownList inside a Data-repeating control, like a GridView or Repeater?

Author

Commented:
its inside a formview

Author

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

Private Function SoftwareTypeDropDownList0() As Object
        Throw New NotImplementedException
    End Function
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

Author

Commented:
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?
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

Author

Commented:
ok all done and no errors so far
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?

Author

Commented:
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>
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

Author

Commented:
I am now getting the drop down box as if there is something there but it is empty
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)?

Author

Commented:
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?
After you call SetMode() is there another call to get the data, or is the FormView already populated at that point?

Author

Commented:
I do not think there is another call to get the data

Author

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

SelectedValue='<%# Bind("OSTypeID") %>'>
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

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

>> 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...

Author

Commented:
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
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

Author

Commented:
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") %>'
>> 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?

Author

Commented:
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),
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?

Author

Commented:
do you mean which table ?

Author

Commented:
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>
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.

Author

Commented:
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
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

Author

Commented:
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

Author

Commented:
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

Author

Commented:
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)

Author

Commented:
The help provide was fantastic and not only fixed the issue but also improved my knowledge of ASP.NET pages
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...!  :-)

Author

Commented:
I just have 4 other dropdownlists on the form I have to do the same for now.  Thanks again for the help

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial