значение datagridview в текстовом поле - PullRequest
0 голосов
/ 12 октября 2010

У меня есть DataGridView и TextBox.Когда я щелкаю ячейку DataGridView, значение должно быть скопировано в текстовое поле.Но это не всегда работает: это работает только иногда.

Вот мой код:

private void gvProductos_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    //DataGridViewRow row = new DataGridViewRow();

    //row = gvProductos.Rows[e.RowIndex];
    ////txtDescripcion.Text = string.Empty;
    //txtDescripcion.Text = row.Cells[1].Value.ToString();

    txtDescripcion.Text = gvProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
}

Ответы [ 5 ]

1 голос
/ 14 октября 2010

Использовать событие CellClick. Это всегда работает.

private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)
    {
      if (dataGridView2.CurrentCell != null && dataGridView2.CurrentCell.Value != null)
        textBox1.Text = dataGridView2.CurrentCell.Value.ToString();
    }

Решение, которое у вас не работает, потому что CellContentClick срабатывает только тогда, когда вы щелкаете по контентной части ячейки. Если вы нажмете на другую область ячейки, где нет содержимого, оно не будет запущено. Вот почему это событие не всегда работает. Попробуйте нажать на содержимое только тогда, вы поймете.

0 голосов
/ 12 сентября 2014

Я думаю, что вы хотите очистить текстовое поле, прежде чем указывать значение

, как это

   private void gvProductos_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
       if (dataGridView2.CurrentCell != null && dataGridView2.CurrentCell.Value != null)
         {
           txtDescripcion.Text = string.Empty;
           textBox1.Text = dataGridView2.CurrentCell.Value.ToString();
        }  
    }
0 голосов
/ 12 сентября 2014

CellContentClick работает для последующего выбора, но не заполняет текстовые поля для первого отображения сетки данных. Однако вы можете использовать отдельный метод для заполнения текстовых полей, передавая e.RowIndex. После отображения сетки данных вызовите метод со значением строки начальной записи.

  1. dgvExceptions.DataSource = ds.Tables [0];
  2. dgvExceptions.Columns [0] .HeaderText = "ID";
  3. dgvExceptions.Columns [0] .Width = 30;
  4. dgvExceptions.Columns [0] .DefaultCellStyle.Alignment =
  5. DataGridViewContentAlignment.MiddleRight;
  6. dgvExceptions.Columns [1] .Visible = false;
  7. dgvExceptions.Columns [2] .HeaderText = "Occurn On On";
  8. dgvExceptions.Columns [2] .Width = 70;
  9. dgvExceptions.Sort (dgvExceptions.Columns [2], ListSortDirection.Descending);
  10. dgvExceptions.Columns [3] .Visible = false;
  11. dgvExceptions.Columns [4] .Visible = false;
  12. dgvExceptions.Columns [5] .Visible = false;
  13. dgvExceptions.Columns [6] .Visible = false;
  14. dgvExceptions.Columns [7] .Width = 317;
  15. dgvExceptions.Columns [8] .Visible = false;
  16. dgvExceptions.Rows [0] .Selected = true;
  17. SetUpDataGridView (0); * * тысяча тридцать шесть 18. 19.
  18. private void dgvExceptions_CellContentClick (отправитель объекта, DataGridViewCellEventArgs e)
  19. {
  20. } 24.
  21. private void SetUpDataGridView (int p)
  22. {
  23. DataGridViewRow row = dgvExceptions.Rows [p];
  24. txtExceptionId.Text = row.Cells [0] .Value.ToString ();
  25. txtConnection.Text = row.Cells [1] .Value.ToString ();
  26. txtExceptionType.Text = row.Cells [6] .Value.ToString ();
  27. txtDateOccurred.Text = row.Cells [2] .Value.ToString ();
  28. txtClass.Text = row.Cells [3] .Value.ToString ();
  29. txtModule.Text = row.Cells [4] .Value.ToString ();
  30. txtMethod.Text = row.Cells [5] .Value.ToString ();
  31. txtMessage.Text = row.Cells [7] .Value.ToString ();
  32. }
0 голосов
/ 21 января 2012
private void grid_order_CellContentClick(
                 object sender, 
                 DataGridViewCellEventArgs e)
{
    Textbox1.Text = Convert.ToString( Gridview.SelectedCells[0].Value);      
}
0 голосов
/ 14 октября 2010

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

protected void gvProductos_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                HiddenField lbl = (HiddenField)e.Row.FindControl("hdfAstID");
                e.Row.Attributes.Add("onclick", "addToTextBox('" + lbl.Value + "')");
            }

        }

на стороне клиента

function addToTextBox(Data)
{
  document.getElementByID("<% textBox1.ClientID %>").value=Data;
}

Надеюсь, это сработает для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...