The 'SelectedIndex' and 'SelectedValue' attributes are mutually exclusive

I have an aspx page with several combo boxes that are initially 'un-bound'
When a user clicks a button the combo's are then 'bound' to their relative SQL Data sources and all is well.

However, in the Page Init event I am checking if a value was passed in via the Query String and if so I am then binding the combo's at that point, this is when I get the above error.

How can I resolve this?
BrianFordAsked:
Who is Participating?
I wear a lot of hats...

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

Vikram Singh SainiSoftware Engineer cum AD DeveloperCommented:
Might be you are binding SelectedIndex and SelectedValue properties of DropDown one by one.

Try commenting either of them to test out results.
0
Ramkisan JagtapLead DeveloperCommented:
Hi BrianFord,

It will be good if you post your code here.
It might that you are binding a field that is not available in you dataset or  you have not set the binding values for the dropdown. on which event are you binding your data to the dataset?
0
BrianFordAuthor Commented:
Here is the code that's binding one of the boxes, I have 9 other combo's all being bound in the same manner

Sub populateDropDownReason()

cboDetReason.DataSourceID = "sqlReasons"
cboDetReason.DataTextField = "reason"
cboDetReason.DataValueField = "reason"
cboDetReason.DataBind()

End Sub

Open in new window

0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

Jitendra PatilSr.Software EngineerCommented:
Brian,

the code you provided is a just like a common function , so could you post the exact code ,where and when are you using the above function, and how does the binding fails ?

Also, can you check whether the sqlDataSource "sqlReasons" is filled with data before binding or before setting the default values.
0
Ramkisan JagtapLead DeveloperCommented:
Why that datasource is in double quotes?
It should be like:

cboDetReason.DataSourceID = sqlReasons
0
Ramkisan JagtapLead DeveloperCommented:
Why that datasource is in double quotes?
It should be like:

cboDetReason.DataSource = sqlReasons
0
BrianFordAuthor Commented:
Here is the code, I've removed all non-rellevant lines to keep it clear:

 Protected Sub Page_Init(sender As Object, e As EventArgs) Handles Me.Init

        If Not IsPostBack Then
           
            ' Check if a contactID was passed in?
            If Not Request.QueryString("contactID") Is Nothing Then
                lblContactID.Text = Request.QueryString("contactID")
		getContactDetailsFromUrl(CType(lblContactID.Text, Integer))
               
  	   End If
        End If

End Sub

 Protected Sub cmdSearchContact_Click(sender As Object, e As EventArgs) Handles cmdSearchContact.Click

        getContactDetails
	
	<snip - doing irrelevant stuff here>

    End Sub
	
Sub getContactDetailsFromUrl(ByVal pContactId As Integer)

        getContactDetails(pContactID)
		
	<snip - doing different irrelevant stuff here>
       		
End SubSub 

sub getContactDetails()

	<snip>
	populateDropDownReason

End Sub

 Sub populateDropDownReason()

        ' Populate the reason drop-downlist
            cboDetReason.DataSourceID = "sqlReasons"
            cboDetReason.DataTextField = "reason"
            cboDetReason.DataValueField = "reason"
            cboDetReason.DataBind(

End Sub

Open in new window

0
Ramkisan JagtapLead DeveloperCommented:
From where are you getting the datasource? Does it filled with the records?
0
BrianFordAuthor Commented:
The data source is defined in the html mark up with an ID of sqlReasons, it does return valid records.

The populateDropdownReasons code works perfectly when called via the button click even after the page has finished loadingt, but when called via the page init event, that's when I get the error

I'm suspecting that it has something to do with what happens during initial page load and postback events?
0
Vikram Singh SainiSoftware Engineer cum AD DeveloperCommented:
Hello BrianFord,

I would like to also view the respective declaration of combobox in .aspx page.
0
BrianFordAuthor Commented:
The Combo Box:

<asp:DropDownList ID="cboDetReason" runat="server" CssClass="form-control"></asp:DropDownList>

Open in new window


The Datasource:
<asp:SqlDataSource ID="sqlReasons" runat="server" ConnectionString="<%$ ConnectionStrings:myConnectionString %>" ProviderName="<%$ ConnectionStrings:myConnectionString.ProviderName %>" SelectCommand="SELECT reason FROM reason ORDER BY reason"></asp:SqlDataSource>

Open in new window

0
Vikram Singh SainiSoftware Engineer cum AD DeveloperCommented:
Just for a test - Comment the code line :-

cboDetReason.DataValueField = "reason"

and then test. And on which specific line does error occurs?
0
Ramkisan JagtapLead DeveloperCommented:
Call your page init code on page load event.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

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

Start your 7-day free trial
BrianFordAuthor Commented:
Your suggestion was spot on, simply moving the logic to the Load event fixed the issue.

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

From novice to tech pro — start learning today.