4

I have a choice column in my SharePoint list called Njësia, I have created a dropdown in my solution and I want to retrieve selected value from dropdown list.

I have a label called Label1 and I want to represent the selected item in dropdown list.

I have the following code:

SPFieldChoice YearChoice = (SPFieldChoice)sampleList.Fields["Njësia"];
        for (int i = 0; i < YearChoice.Choices.Count; i++)
        {
            DropDownList4.Items.Add(YearChoice.Choices[i].ToString());
        }  
  string selectedvalyear = DropDownList4.SelectedValue;
  Label1.Text = selectedvalyear;

I also tried this line:

string selectedvalyear = DropDownList4.Text;

The result of Label1 is null or it displays only the first item in dropdown I have enable autopostback but nothing happens Please help me!

  • @AakashMorya I am using it but because the fact that dropdown gets items directly from SP list I am thinking it has no value – Nderon Hyseni Jul 11 '16 at 9:28
  • Just do one thing. Debug this code using worker process and find whether value in DropDownList4 is set or not? – Aakash Maurya Jul 11 '16 at 9:32
  • Look @AakashMorya if I use your code it shows me only the first item of my dropdown and when I try to change it is not going to be changed – Nderon Hyseni Jul 11 '16 at 9:33
  • If you are selecting the value from dropdown in GUI then surely you will get value. See my updated answer – Aakash Maurya Jul 11 '16 at 9:35
  • Maybe my guide "How to populate a list column" could help: afrait.com/blog/auto-populate-list-column-en – Patrick Jul 11 '16 at 9:46
3

To get a SharePoint Choice Field value

SPFieldChoice myChoicesfield = (SPFieldChoice)list.Fields["FieldName"];
        for (int i = 0; i < myChoicesfield.Choices.Count; i++)
          {
            DropDownListName.Items.Add(myChoicesfield.Choices[i].ToString());
          }

To get a SharePoint Multiple Choice Field value

SPFieldMultiChoiceValue itemValue = 
new SPFieldMultiChoiceValue(item["FieldName"].ToString());
foreach (string choice in itemValue)
{
// value is in choice
}

Ref : https://blog.devoworx.net/2012/11/01/get-and-set-a-sharepoint-multiple-choice-field-value-using-server-object-model-c/

Regarding your code

it's normal the above code retrieves only one item or null because the selected value only get one value if the dropdown has items or null if it's empty ,so that try to get the count of dropdown list items to make sure that you have already retrieved the data properly using the above code before you assign the selected value to the label, then in Selected Index Changed Event don't forget to surround your code with

If(!Page.IsPostBack)
{
Label.text = dropdownlist.Text;
}

Might be the problem is not related to the retrieving value rather than your code scenarios !

  • can't make your code to work – Nderon Hyseni Jul 11 '16 at 11:39
  • Why ?!! it's normal that your above code retrieves only one item or null because the selected value only get one value if the dropdown has items or null if it's empty ,so that try to get the count of dropdown list items to make sure my above code bound to the drop-down list or not ! before you assign the selected value to the label, might be the problem is not related retrieving the value rather than your code scenarios ! – Mohamed El-Qassas MVP Jul 11 '16 at 11:52
  • I cannot use SPFieldMultiChoiceValue it provides me an error – Nderon Hyseni Jul 12 '16 at 14:03
  • Are you checked this >> SPFieldChoice myChoicesfield = (SPFieldChoice)list.Fields["FieldName"]; for (int i = 0; i < myChoicesfield.Choices.Count; i++) { DropDownListName.Items.Add(myChoicesfield.Choices[i].ToString()); } – Mohamed El-Qassas MVP Jul 12 '16 at 14:05
  • Kindly,Read my answer again I provided you with one choice and multiple choice also choice field is also drop-down list but you only changed it's style view to show as drop-down list instead of choice but the data type is same – Mohamed El-Qassas MVP Jul 12 '16 at 14:08
3

From where DropDown1 came? In your code you are adding items in DropDownList4 and you are trying to access the value from DropDown1.

Your code should be like:

string selectedvalyear = Convert.ToString(DropDownList4.SelectedItem);
Label1.Text = selectedvalyear;

If you want to change the value of Lable1 from dropdown every time when you change item, then you must create a SelectedIndexChanged Event of DropDown and write above code in that event.

Solution-2:

You should write your code in :

If(!Page.IsPostBack)
{
SPFieldChoice YearChoice = (SPFieldChoice)sampleList.Fields["Njësia"];
        for (int i = 0; i < YearChoice.Choices.Count; i++)
        {
            DropDownList4.Items.Add(YearChoice.Choices[i].ToString());
        }  
  string selectedvalyear = DropDownList4.SelectedValue;
  Label1.Text = selectedvalyear;
}
  • It was a mistake I updated the question but still not working – Nderon Hyseni Jul 11 '16 at 9:30
  • Just do one thing. Debug this code using worker process and find whether value in DropDownList4 is set or not? – Aakash Maurya Jul 11 '16 at 9:32
  • I am retrieving the choices in my page_load and for each time that I try to chose another item in my dropdown list it selects only the first item nothing else! – Nderon Hyseni Jul 11 '16 at 9:38
  • Then you must iterate it and go with selectedIndex and retrieve the value using DropDownList4.Items[YourIndex].Value; Your code is written in such a way it will always give you first item only. What you want to display in Label1? – Aakash Maurya Jul 11 '16 at 9:41
  • still not working :( – Nderon Hyseni Jul 11 '16 at 9:45
2

Make sure you write dropdown change event. Keep autopostback property to true.

In dropdown change event of your dropdown write below code.

protected void DropDownList4_SelectedIndexChanged(object sender, EventArgs e)
        {
                Label1.Text = DropDownList4.SelectedItem.Text;
        }

This will show display value of selected choice

You can also use:

  Label1.Text = DropDownList4.SelectedItem.Value;

This will show value (not display value) of selected choice

Your HTML block should look like:

<asp:DropDownList ID="DropDownList4" runat="server" Height="22px" AutoPostBack="true" OnSelectedIndexChanged="DropDownList4_SelectedIndexChanged">

  • Unfortunately only the first item is being selected and when i try to change the value, it does not change it keeps only the first value – Nderon Hyseni Jul 11 '16 at 9:51
  • can you show HTML block of you dropdown control – Gaurravs Jul 11 '16 at 10:00
  • <asp:DropDownList ID="DropDownList4" runat="server" Height="22px" AutoPostBack="true"> </asp:DropDownList> – Nderon Hyseni Jul 11 '16 at 10:00
  • dude, you haven't used used the solution I provided. – Gaurravs Jul 11 '16 at 10:01
  • ? I don`t understand what should I do Gaurravs? – Nderon Hyseni Jul 11 '16 at 10:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.