防止 BindingSource 添加两个空白行到 gridview

发布于 2025-01-18 03:49:55 字数 1855 浏览 1 评论 0原文

我有像这样连接到网格控件的bindingsource

 private BindingSource listDepartmentDto = new();
 private async Task LoadDataAsync()
{
    listDepartmentDto.DataSource = await departmentService.GetAllDepartmentsAsync();
    gridControl1.DataSource = listDepartmentDto;
}

,并且我像这样绑定了控件

 private void BindingControls()
{        
    var departmentDto = listDepartmentDto.Current as DepartmentDto;
    txtID.DataBindings.Add(new Binding("EditValue", listDepartmentDto, nameof(departmentDto.IdDepartment)));
    txtTitle.DataBindings.Add(new Binding("EditValue", listDepartmentDto, nameof(departmentDto.NameDepartment)));
    txtDescription.DataBindings.Add(new Binding("EditValue", listDepartmentDto, nameof(departmentDto.DescriptionDepartment)));
}

,并且我使用像这样的当前事件

listDepartmentDto.CurrentChanged += new EventHandler(listDepartmentDtoChanged);
private void listDepartmentDtoChanged(object sender,EventArgs e)
{
    var departmentDto = listDepartmentDto.Current as DepartmentDto;
    if (departmentDto.IdDepartment == 0)
    {
        btnSave.Text = Resources.Save;

        btnNew.Enabled = false;
        btnDelete.Enabled = false;

        txtTitle.Focus();
        return;
    }
    btnSave.Text = Resources.Edit;
    btnNew.Enabled = true;
    btnDelete.Enabled = true;
}

,在btnnew click click evert ymis中,

private async void btnNew_Click(object sender, EventArgs e)
{
    listDepartmentDto.AddNew();       
    await Permission();
}

问题是当我单击btnnew时,它会创建空白行,并且当我选择另一个行且再次单击btnnew,它创建了新的空白行等。
如何防止这种行为?如果用户移动到另一个行而没有输入任何数据,则该行自动删除了
网格视图可食用已设置为false。
网格视图(添加,删除)行设置为false。

I have BindingSource that attached to grid control like this

 private BindingSource listDepartmentDto = new();
 private async Task LoadDataAsync()
{
    listDepartmentDto.DataSource = await departmentService.GetAllDepartmentsAsync();
    gridControl1.DataSource = listDepartmentDto;
}

And I binding Controls like this

 private void BindingControls()
{        
    var departmentDto = listDepartmentDto.Current as DepartmentDto;
    txtID.DataBindings.Add(new Binding("EditValue", listDepartmentDto, nameof(departmentDto.IdDepartment)));
    txtTitle.DataBindings.Add(new Binding("EditValue", listDepartmentDto, nameof(departmentDto.NameDepartment)));
    txtDescription.DataBindings.Add(new Binding("EditValue", listDepartmentDto, nameof(departmentDto.DescriptionDepartment)));
}

And I use CurrentChanged event like this

listDepartmentDto.CurrentChanged += new EventHandler(listDepartmentDtoChanged);
private void listDepartmentDtoChanged(object sender,EventArgs e)
{
    var departmentDto = listDepartmentDto.Current as DepartmentDto;
    if (departmentDto.IdDepartment == 0)
    {
        btnSave.Text = Resources.Save;

        btnNew.Enabled = false;
        btnDelete.Enabled = false;

        txtTitle.Focus();
        return;
    }
    btnSave.Text = Resources.Edit;
    btnNew.Enabled = true;
    btnDelete.Enabled = true;
}

And in btnNew click event like this

private async void btnNew_Click(object sender, EventArgs e)
{
    listDepartmentDto.AddNew();       
    await Permission();
}

The problem is when I click on btnNew it create blank row and when I select an other row and click again on btnNew it create new blank row and so on.
How can I prevent this behavior? and if the user move to an other row without entry any data the row removed automatically
The grid view edtiable has set to false.
the grid view (add,remove) row has set to false.
Department Winform

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文