Что заменяет FindControl для WinForms c #

1

Я конвертирую свое приложение из WebForm в WinForm, и я пытаюсь определить, какие флажки выбраны пользователем. В WebForm FindControl() мне удалось найти флажки. В WinForms это не то же самое или, по крайней мере, это не позволит мне это сделать. Что я могу использовать, чтобы найти, если флажок установлен в gridview и/или как я могу изменить это, чтобы позволить FindControl() работать?

Здесь я нахожу элементы управления

var rows = dropdeadGridView.Rows;
bool isChecked = ((CheckBox)rows[j].FindControl("SelectCheckBox")).Checked;//problem
if (isChecked)
{
    values += rows[j].Cells[2] + ",";
    CurrentOrders = values;
}

Моя проблема лежит выше, потому что ниже я помещаю ее в массив и отделяю их, чтобы перейти к моему запросу.

string[] o = CurrentOrders.ToString().Split(',');

for (int i = 0; i < o.Length; i++)
{
    SqlConnection dbConn = DBHelper.getConnection();
    try
    {
        using (dbConn)
        {
            SqlCommand addJob = new SqlCommand(@"UPDATE ODetail SET L_NUMBER = @L_NUMBER WHERE S_O_NUMBER = @SONumber", dbConn);
            addJob.Parameters.AddWithValue("@SONumber", o[i]);
            addJob.Parameters.AddWithValue("@L_NUMBER", lNumber.Text);
            dbConn.Open();
            addJob.ExecuteNonQuery();
        }
        MessageBox.Show("Updated!");
     }
     catch (Exception ex)
     {
        throw ex;
     }

Код ошибки

System.Windows.Forms.DataGridViewRow 'не содержит определения для "FindControl", и не может быть найден метод расширения "FindControl", принимающий первый аргумент типа "System.Windows.Forms.DataGridViewRow" (вам не хватает директивы using или ссылка на сборку?)

  • 0
    забудь winforms. Это действительно старая (устаревшая) технология, которая не рекомендуется ни для каких новых проектов. Только для поддержки устаревших приложений. Парадигма XAML + DataBinding действительно намного ближе к веб-парадигме, чем winforms. Все современные технологии пользовательского интерфейса в .Net World основаны на XAML. Изучая XAML, вы открываете себе путь в современные технологии и повторное использование кода. Принимая во внимание, что весь (ужасный) код, который вы бросаете в winforms, навсегда останется в winforms.
Теги:
winforms

1 ответ

0
Лучший ответ

Вам не нужен FindControl в WinForm. Вы можете просто сделать:

bool checkBoxValue = Convert.ToBoolean(dataGridView1.Rows[0].Cells[2].Value); 

Предполагая, что вы сравниваете первый ряд, и ваш флажок находится в третьем столбце

Вы также можете перебирать каждую строку, чтобы получить выбранное значение флажка, например:

foreach (DataGridViewRow dr in dataGridView1.Rows)
{
    bool checkBoxValue = Convert.ToBoolean(dr.Cells[2].Value); 
}
  • 0
    Так как моя последняя строка, это будет Rows [5] .Cells [2] .Value, так как последний столбец.
  • 0
    Что в этом случае выгоднее?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню