Winforms数据网格默认值
这让我发疯: 我使用的是datagridview(绑定到数据集)和绑定到数据集的文本框(这意味着输入到文本框中的所有内容都会反映在datagridview中)。datagridview实际上仅用于显示值(用户无法编辑单元格中的任何内容) 因此:当用户按下“添加新记录”按钮(由visual studio使用binding navigator等自动创建)时,我希望以编程方式选择这一新行(请记住:用户无法使用鼠标进行选择)并插入一些值 我试着使用Winforms数据网格默认值,winforms,datagridview,Winforms,Datagridview,这让我发疯: 我使用的是datagridview(绑定到数据集)和绑定到数据集的文本框(这意味着输入到文本框中的所有内容都会反映在datagridview中)。datagridview实际上仅用于显示值(用户无法编辑单元格中的任何内容) 因此:当用户按下“添加新记录”按钮(由visual studio使用binding navigator等自动创建)时,我希望以编程方式选择这一新行(请记住:用户无法使用鼠标进行选择)并插入一些值 我试着使用 DefaultValuesNeeded 事件,但仅
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添加到列表中。”这是一个棘手的部分,它让我头疼(我将数据集与数据表一起使用)!看起来好多了!我会尝试一下,让你知道!谢谢