datagridview在textbox上的值

时间:2010-10-11 22:28:05

标签: c# winforms datagridview

我有一个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 个答案:

答案 0 :(得分:1)

使用CellClick事件。它总能奏效。

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

您所拥有的解决方案无效,因为只有在单击单元格的内容部分时才会触发CellContentClick。如果单击单元格中没有内容的其他区域,则不会被触发。这就是为什么这个事件总是不起作用的原因。尝试点击内容然后你才会意识到。

答案 1 :(得分:0)

可以在客户端进行。虽然数据网格行数据绑定发生时添加了一个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;
}

希望这对你有用

答案 2 :(得分:0)

private void grid_order_CellContentClick(
                 object sender, 
                 DataGridViewCellEventArgs e)
{
    Textbox1.Text = Convert.ToString( Gridview.SelectedCells[0].Value);      
}

答案 3 :(得分:0)

CellContentClick适用于后续选择,但不会填充首次显示datagridview时的文本框。但是,您可以使用单独的方法填充文本框,并传入e.RowIndex。显示datagridview后,使用初始“​​record”的行值调用方法。

  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 =“发生在”;
  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(object sender,DataGridViewCellEventArgs e)
  19. {
  20. SetUpDataGridView(e.RowIndex);
  21. } 24。
  22. private void SetUpDataGridView(int p)
  23. {
  24. DataGridViewRow row = dgvExceptions.Rows [p];
  25. txtExceptionId.Text = row.Cells [0] .Value.ToString();
  26. txtConnection.Text = row.Cells [1] .Value.ToString();
  27. txtExceptionType.Text = row.Cells [6] .Value.ToString();
  28. txtDateOccurred.Text = row.Cells [2] .Value.ToString();
  29. txtClass.Text = row.Cells [3] .Value.ToString();
  30. txtModule.Text = row.Cells [4] .Value.ToString();
  31. txtMethod.Text = row.Cells [5] .Value.ToString();
  32. txtMessage.Text = row.Cells [7] .Value.ToString();
  33. }

答案 4 :(得分:0)

我认为你想在给出值之前清除你的文本框

像这样

   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();
        }  
    }