2

我正在处理数据输入表单。当我单击保存按钮时,我希望将表单中的数据保存到数据库中。我还想DataGridview从数据库中填充一个。

我的问题是:当我从DataGridview该行中选择任何行时,该行将显示为已选中。根据主键数据填写数据输入表的所有字段。

我可以使用哪个事件?任何人都可以提供任何建议吗?

4

4 回答 4

1

最简单的方法是使用绑定源和数据绑定。

因此,将绑定源添加到您的表单并使其成为您的数据源,DataGridView然后为您的数据输入字段设置数据绑定(这里我只是绑定到单个文本框)。

// Load your data into a data source - for the example just imagine a data table called dt
bindingSource1.DataSource = dt;
dataGridView1.DataSource = bindingSource1;

// Now we set up a databinding to a text box, to an example property LastName
textBox1.DataBindings.Add(new Binding("Text", bindingSource1, "LastName", false,
    DataSourceUpdateMode.OnPropertyChanged));

当您从网格中选择项目时,此绑定会自动以两种方式运行。将显示您选择的每个项目的姓氏。

要使双向绑定更快速(有时它会滞后到您进入网格),您可以在文本框 LostFocus 事件中执行以下操作:

void textBox1_LostFocus(object sender, EventArgs e)
{
    bindingSource1.ResetBindings(false);
}
于 2012-08-14T12:21:05.510 回答
0

当您选择一行时 SelectedIndexChanging 被调用

when a row is selected SelectedIndexChanged is called

要填充 gridview,您必须使用 RowDataBound

有关完整列表,请参阅以下 msdn 链接 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview_events.aspx

于 2012-08-13T13:22:50.307 回答
0

你可以做

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            textBox1.Text = dataGridView1.CurrentRow[e.RowIndex].ToString();
        }

或者使用row enter事件获取当前行

private void dataGridView1_RowEnter(object sender, 
    DataGridViewCellEventArgs e)
{
    //e.RowIndex to get the index of the row
}
于 2012-08-13T13:20:12.060 回答
0

尝试使用:

GridView.RowCommand Event

有关更多详细信息,请参阅 - GridView.RowCommand 事件

于 2012-08-13T13:22:20.447 回答