Winforms数据网格默认值

Winforms数据网格默认值,winforms,datagridview,Winforms,Datagridview,这让我发疯: 我使用的是datagridview(绑定到数据集)和绑定到数据集的文本框(这意味着输入到文本框中的所有内容都会反映在datagridview中)。datagridview实际上仅用于显示值(用户无法编辑单元格中的任何内容) 因此:当用户按下“添加新记录”按钮(由visual studio使用binding navigator等自动创建)时,我希望以编程方式选择这一新行(请记住:用户无法使用鼠标进行选择)并插入一些值 我试着使用 DefaultValuesNeeded 事件,但仅

这让我发疯:

我使用的是datagridview(绑定到数据集)和绑定到数据集的文本框(这意味着输入到文本框中的所有内容都会反映在datagridview中)。datagridview实际上仅用于显示值(用户无法编辑单元格中的任何内容)

因此:当用户按下“添加新记录”按钮(由visual studio使用binding navigator等自动创建)时,我希望以编程方式选择这一新行(请记住:用户无法使用鼠标进行选择)并插入一些值

我试着使用

DefaultValuesNeeded 
事件,但仅当用户选择带有星号指示器的行(用户不允许执行的操作)时才会触发

我怎样才能模拟这种行为?我应该采取另一种方法吗

提前谢谢

修订版:

那么这次活动怎么样?如果在BindingNavigator创建新行时触发该命令,则有机会填充该对象。

修订版:


那么这次活动怎么样?如果在BindingNavigator创建新行时触发该命令,则这是填充该对象的机会。

正在搜索替代我当前执行此操作的方法,只是想让您知道我知道的几种方法。在使用*(新行)或BindingNavigator时,这两个选项都将设置默认值

private void CityBindingSource_AddingNew(object sender, AddingNewEventArgs e)
{
    // Simply set the default value to the next viable ID, will automatically set the value when needed.
    locationDataSet.CITY.CITY_IDColumn.DefaultValue = CityTableAdapter.GetNewID(); // ++maxID;
}

我真的希望用这个

private void CityBindingSource_AddingNew(object sender, AddingNewEventArgs e)
{
    // Cast your strongly-typed bindingsource List to a DataView and add a new DataRowView 
    DataRowView rowView = ((DataView)CityBindingSource.List).AddNew();
    var newRow = (LocationDTSDataSet.CITYRow)rowView.Row;
    newRow.CITY_ID = CityTableAdapter.GetNewID();
    newRow.CMMT_TXT = "Whatever defaults I want";
    e.NewObject = rowView;
}

但当使用BindingNavigator或任何基于代码的bindingSource.AddNew()进行添加时,只会产生一个空行。希望有人能找到更好的方法,但到目前为止,这对我来说很有效。

正在寻找替代方法,以取代我目前的做法,只是想让你知道我知道的几种方法。在使用*(新行)或BindingNavigator时,这两个选项都将设置默认值

private void CityBindingSource_AddingNew(object sender, AddingNewEventArgs e)
{
    // Simply set the default value to the next viable ID, will automatically set the value when needed.
    locationDataSet.CITY.CITY_IDColumn.DefaultValue = CityTableAdapter.GetNewID(); // ++maxID;
}

我真的希望用这个

private void CityBindingSource_AddingNew(object sender, AddingNewEventArgs e)
{
    // Cast your strongly-typed bindingsource List to a DataView and add a new DataRowView 
    DataRowView rowView = ((DataView)CityBindingSource.List).AddNew();
    var newRow = (LocationDTSDataSet.CITYRow)rowView.Row;
    newRow.CITY_ID = CityTableAdapter.GetNewID();
    newRow.CMMT_TXT = "Whatever defaults I want";
    e.NewObject = rowView;
}

但当使用BindingNavigator或任何基于代码的bindingSource.AddNew()进行添加时,只会产生一个空行。希望有人能找到更好的方法,但到目前为止这对我很有效。

嗨,斯图尔特!谢谢你的回复。正如文档正确指出的那样,“当绑定到DataView或DataTable时,您无法设置NewObject属性,因为您无法将新DataRowView添加到列表中。”这是一个棘手的部分,它让我头疼(我将数据集与数据表一起使用)!看起来好多了!我会尝试一下,让你知道!谢谢史都华!谢谢你的回复。正如文档正确指出的那样,“当绑定到DataView或DataTable时,您无法设置NewObject属性,因为您无法将新DataRowView添加到列表中。”这是一个棘手的部分,它让我头疼(我将数据集与数据表一起使用)!看起来好多了!我会尝试一下,让你知道!谢谢