c # Введите значение в Dataatable с помощью различных форм - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть проект ac # с 4+ формами (родительско-дочерние отношения).В Form01 я создаю таблицу данных с начальными значениями «Rating», присвоенными переменной «Horse»:

public Form01()
        {
            InitializeComponent();
            dgvMeetings.DataSource = GetMeetings();
            dtRatings = GetRating();
        }

Таблица dtRatings создается с помощью вызова SQL следующим образом:

public DataTable GetRating()
        {
            DataTable dtRating = new DataTable();
            string connString = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString;
            using (SqlConnection con = new SqlConnection(connString))
            {
                using (SqlCommand cmd = new SqlCommand(@"SELECT 
                                                          Course
                                                        , Race
                                                        , Cloth
                                                        , Horse
                                                        , Rating
                                                        , Odds
                                                        FROM[Smartform].[dbo].[Entries]
                                                        where Date = convert(date, getdate() - 1) 
                                                        order by 1, 2, 3", con))
                {
                    con.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    dtRating.Load(reader);
                }
            }
            return dtRating;
        }

В Form4 я хочу иметь возможность обновлять значение «Rating» в dtRating, вводя значение в текстовое поле.Я пытался сделать это с помощью вызова textbox-keyup следующим образом:

private void TbxForm01_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                string searchExpression = "Horse = " + Form03.Horse;
                MessageBox.Show(searchExpression);
                DataRow[] foundRows;
                foundRows = Form01.dtRatings.Select(searchExpression);
                MessageBox.Show(foundRows.ToString());

            }
        }

Как видите, я только начал.Мой план состоял в том, чтобы использовать Form03.Horse для поиска Horse на dtRatings и получения номера строки.Затем используйте это, чтобы перезаписать значение рейтинга значением текстового поля.

В первом окне сообщения отображается правильное имя «Лошадь».Тем не менее, я не могу заставить выражение Foundrows работать и правильно получить номер строки из dtRatings.

Может кто-нибудь помочь с этим и показать мне, как переписать значение рейтинга в dtRatings с введенным значением текстового поля?

Спасибо.

1 Ответ

0 голосов
/ 23 апреля 2019

Я предполагаю, что вы пытаетесь создать форму для ввода номера лошади / имени и попытаться найти эту лошадь в DataTable.Это сделает это.Однако после этого вы останетесь с DataRow, вам понадобится TextBox с именем txtRating, который содержит число, например 4.3, которое вы хотите обновить с:

В форме 03:

private void txtHorse_KeyDown(object sender, KeyEventArgs e)
{
    // If we hit enter and we have a horse value in the text box, look it up
    if (e.KeyCode == Keys.Enter && txtHorse.Text.Length > 0)
    {
        foreach (DataRow dt in Form01.dtRating.Rows)
        {
            if (dt["Horse"].ToString() == txtHorse.Text)
            {
                // We found the horse
                MessageBox.Show(
                    $"Found horse {dt["Horse"]} (course={dt["Course"]} race={dt["Race"]} cloth={dt["Cloth"]} rating={dt["Rating"]} odds={dt["Odds"]}");

                // TODO: Do something with the data row
                dt["Rating"] = 5; // Possibly decimal.Parse(txtRating.Text); ?

                // Apply updates
                dt.AcceptChanges();
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...