programmer1010101 Ответов: 1

Как заполнить поле со списком на основе текстового поля и данных, полученных из API


Я хотел бы начать с того, что я не являюсь разработчиком, и это мой самый первый раз, когда я пишу код такого уровня сложности (по крайней мере, для меня). Любая помощь/руководство будут очень признательны.

Идея этой программы состоит в том, чтобы получить идентификатор пользователя сотрудника (или подпись) из URL-адреса API после ввода имени.

Прямо сейчас моя программа не показывает никаких ошибок, однако, когда я нажимаю кнопку Пуск, мое поле со списком (помеченное "имя") не показывает никаких предложений, как это было задумано, и никакая информация не отображается в текстовом поле 2 (помеченное "идентификатор пользователя").

Я хотел бы добавить, что изначально у меня было текстовое поле вместо поля со списком, и тогда я смог правильно получить данные. Проблема возникла, когда я переключился на поле со списком. Заранее спасибо.

Это моя строка JSON:

[{"подпись":"JANDOW","имя":"Jane","полное имя":"Dow, Jane","фамилия":"Dow"}]

Что я уже пробовал:

Мой код формы таков:

TimeSheets_Try_11

{
    public partial class Form1 : Form
    {
        WebAPI WA = new WebAPI();
      

        public Form1()
        {
            InitializeComponent();
            webBrowser1.Url = new Uri(StaticStrings.UrlIora);
        }

        private void label1_Click(object sender, EventArgs e)
        {    
        }

        private void button1_Click(object sender, EventArgs e)
        {    
            comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;

            string sgname; string projectstring;
            projectstring = comboBox1.Text.ToString();
            sgname = WA.Getsignature(projectstring);
            textBox2.Text = sgname; 
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {    
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {    
        }

        private void Form1_Load(object sender, EventArgs e)
        {    
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {                
        }
    }

}

Код для вызова API таков:
namespace TimeSheets_Try_11.Controllers
{
    class WebAPI
    {
        public string Getsignature(string name)
        {   
            var cookies = FullWebBrowserCookie.GetCookieInternal(new Uri(StaticStrings.UrlIora), false);
            WebClient wc = new WebClient();
            wc.Encoding = System.Text.Encoding.UTF8;
            wc.Headers.Add("Cookie:" + cookies);
            wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            wc.UseDefaultCredentials = true;
            string uri = "";

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            uri = StaticStrings.UrlIora + name + "&%24format=json&%24top=30&%24filter=status%20eq%20%27Active%27&%24count=true";
            var response = wc.DownloadString(uri);

            var status = JsonConvert.DeserializeObject<List<Employeename>>(response);
            string signame = status.Select(js => js.signature).FirstOrDefault();
            return signame;   
        }
    }
}


Мой код для определения переменных таков:

namespace TimeSheet_Try11_Models
{ 
        public class Employeename
        {
            public string signature { get; set; }
            public string firstName { get; set; }
            public string fullName { get; set; }
            public string lastName { get; set; }
        }

        public class Root
        {
            public List<Employeename> Employeename { get; set; }
        }    
    }

BillWoodruff

где находится код, который заполняет, или для привязки, в поле со списком ?

programmer1010101

Это в моем разделе "код форм"

BillWoodruff

этот код показывает свойства настройки Combobox, но не показывает заполнение или привязку.

1 Ответов

Рейтинг:
2

Garth J Lancaster

Как вы думаете, это

Цитата:
projectstring = элемент combobox1.Текст.Метод toString();
делает ли он то, что ты думаешь ?

Мои деньги будут на месте.
projectstring = (string)comboBox1.SelectedValue;