将客户端已输入的新行添加到 RadgirdView 上的数据源

本文关键字:RadgirdView 数据源 添加 新行 客户端 输入 | 更新日期: 2023-09-27 18:34:22

我是将 telerik 工具用于 winforms 的新手,我想知道是否有人可以帮助我找到最佳方法,以便客户端可以在 radgrid 上添加新行并让它在数据源上显示此更改。

到目前为止,我已经设置了radgrid,以便客户端可以添加新行。我只需要将其绑定到数据源。

    private void radGridView1_Click(object sender, EventArgs e)
    {
        this.radGridView1.AllowEditRow = false;
        this.radGridView1.AllowAddNewRow = true;
        this.radGridView1.AllowDeleteRow = false;
        this.radGridView1.AddNewRowPosition = Telerik.WinControls.UI.SystemRowPosition.Top;
        this.radGridView1.MasterTemplate.AddNewBoundRowBeforeEdit = true;
        radGridView1.EnableAlternatingRowColor = true;
    }

将客户端已输入的新行添加到 RadgirdView 上的数据源

看看RadGridViewUserAddedRow事件。这是在用户向网格添加新行后触发的。然后,您可以将新条目添加到源列表或数据表中。

List<Foo> _lSource = new List<Foo>();
DataTable _tSource = new DataTable();
private void radGridView1_UserAddedRow(object sender, GridViewRowEventArgs e)
{
    Foo foo = new Foo();
    foo.Col1 = e.Row.Cells["col1"].Value.ToString();
    foo.Col2 = e.Row.Cells["col2"].Value.ToString();
    _lSource.Add(foo);
    _tSource.Rows.Add(e.Row.Cells["col1"].Value.ToString(), e.Row.Cells["col2"].Value.ToString());
}

我在同一代码片段中添加了这两种可能性。只需选择一个(列表或表格)。我刚刚创建了一个随机类来向您展示一个例子。您可以创建自己的类并根据需要命名属性。请注意,该列(在我的示例中为 col1col2)必须存在,否则您将获得 NullReferenceException。如果您使用的是DataTable则必须在添加行之前添加一次列。

_tSource.Columns.Add("col1");
_tSource.Columns.Add("col2");

我还建议不要更新RadGridView单击事件的RadGridView属性。因为设置一次这些属性就足够了。现在,您可以在每次单击网格视图时设置它们。将它们移动到窗体的 Load 事件,或直接在设计器属性中设置它。

private void Form_Load(object sender, EventArgs e)
{
    radGridView1.AllowEditRow = false;
    radGridView1.AllowAddNewRow = true;
    radGridView1.AllowDeleteRow = false;
    radGridView1.AddNewRowPosition = Telerik.WinControls.UI.SystemRowPosition.Top;
    radGridView1.MasterTemplate.AddNewBoundRowBeforeEdit = true;
    radGridView1.EnableAlternatingRowColor = true;
}

RadGridView支持到各种数据源的数据绑定,CRUD操作将自动为您处理。在这里,您可以找到有关支持的数据源的信息:用于WinForms文档的Telerik UI

这是如何绑定到DataTable,其中所有 CRUD 操作都是开箱即用

RadGridView radGridView1 = new RadGridView();
this.Controls.Add(radGridView1);
radGridView1.Dock = DockStyle.Fill;
DataTable table = new DataTable();
table.Columns.Add("col1");
table.Columns.Add("col2");
table.Rows.Add("value1", "value1");
table.Rows.Add("value2", "value2");
radGridView1.DataSource = table;

这里也是一个设计时教程。