Winforms 无法将项添加到只读或固定大小的列表中
我正在使用bindingsource。问题是,当我在绑定源代码中执行Winforms 无法将项添加到只读或固定大小的列表中,winforms,bindingsource,Winforms,Bindingsource,我正在使用bindingsource。问题是,当我在绑定源代码中执行AddNew()时,它会给我一个异常项不能添加到只读或固定大小的列表中。此表单是对话框。为了便于您审阅,我添加了代码 主表单代码 private void bindingNavigatorAddNewItem_Click_1(object sender, EventArgs e) { try { this.Validate(); _earning = (Earning)this.e
AddNew()
时,它会给我一个异常项不能添加到只读或固定大小的列表中。
此表单是对话框。为了便于您审阅,我添加了代码
主表单代码
private void bindingNavigatorAddNewItem_Click_1(object sender, EventArgs e)
{
try
{
this.Validate();
_earning = (Earning)this.earningBindingSource.Current;
string EmpNo = Convert.ToString(_earning.Empno == null || _earning.Empno == string.Empty ? "0" : _earning.Empno);
Incomes.frmIncomeAddList _earnEmployee = new Incomes.frmIncomeAddList();
_earnEmployee.ShowDialog();
}
catch (Exception ex)
{
}
}
public frmIncomeAddList( )
{
InitializeComponent();
FillCurrency();
FillDropdown();
FillEarnCode();
FillEarnCodeDESC();
this.earningBindingSource.AddNew();
this.earningBindingNavigatorSaveItem.Enabled = true;
FillDropdown();
}
这是对话框表单代码
private void bindingNavigatorAddNewItem_Click_1(object sender, EventArgs e)
{
try
{
this.Validate();
_earning = (Earning)this.earningBindingSource.Current;
string EmpNo = Convert.ToString(_earning.Empno == null || _earning.Empno == string.Empty ? "0" : _earning.Empno);
Incomes.frmIncomeAddList _earnEmployee = new Incomes.frmIncomeAddList();
_earnEmployee.ShowDialog();
}
catch (Exception ex)
{
}
}
public frmIncomeAddList( )
{
InitializeComponent();
FillCurrency();
FillDropdown();
FillEarnCode();
FillEarnCodeDESC();
this.earningBindingSource.AddNew();
this.earningBindingNavigatorSaveItem.Enabled = true;
FillDropdown();
}
在对话框窗体this.earningBindingSource.AddNew()上代码>我收到异常无法将项目添加到只读或固定大小列表。
你能帮帮我吗。提前感谢尝试以下方法:
List<Earning> earnings = ((IEnumerable<Earning>)earningBindingSource.DataSource).ToList();
earnings.Add(new Earning());
earningBindingSource.DataSource = earnings.AsEnumerable();
列出收益=((IEnumerable)earningBindingSource.DataSource).ToList();
收入。添加(新收入());
earningBindingSource.DataSource=收益.AsEnumerable();
尝试以下方法:
List<Earning> earnings = ((IEnumerable<Earning>)earningBindingSource.DataSource).ToList();
earnings.Add(new Earning());
earningBindingSource.DataSource = earnings.AsEnumerable();
列出收益=((IEnumerable)earningBindingSource.DataSource).ToList();
收入。添加(新收入());
earningBindingSource.DataSource=收益.AsEnumerable();
当父表没有记录时,在子表中添加新行,然后显示此错误
当父表没有记录时,项不能添加到只读或固定大小的列表中,并在子表中添加新行,然后显示此错误
项不能添加到只读或固定大小列表中
请确保YourBindingSource.AllowNew=true代码>
或从BindingSource的“属性”窗口:
它对我很有效。确保YourBindingSource.AllowNew=true代码>
或从BindingSource的“属性”窗口:
它对我有用。很明显,您的BindingSource绑定到固定大小或只读列表。您应该更改基础数据源以使其可编辑或可变。但我正在执行此操作。earningBindingSource.AddNew()
我在这里为.AddNew()
做的工作是,我假设您的earningBindingSource是BindingSource的类型,AddNew()将向基础数据源添加新行。@KingKing那么您的建议是什么?更改基础数据源,如果您将其声明为只读,则无论如何都无法更改。我不知道您的数据源是什么,所以最好更新您的问题,以帮助其他人了解您的数据源是什么。我通常将数据源创建为DataTable。你的呢?很明显,你的BindingSource绑定到固定大小或只读列表。您应该更改基础数据源以使其可编辑或可变。但我正在执行此操作。earningBindingSource.AddNew()
我在这里为.AddNew()
做的工作是,我假设您的earningBindingSource是BindingSource的类型,AddNew()将向基础数据源添加新行。@KingKing那么您的建议是什么?更改基础数据源,如果您将其声明为只读,则无论如何都无法更改。我不知道您的数据源是什么,所以最好更新您的问题,以帮助其他人了解您的数据源是什么。我通常将数据源创建为DataTable。你的呢?