Asp.net 在绑定到数据源的DevExpress AspxGridView中添加新行/记录

Asp.net 在绑定到数据源的DevExpress AspxGridView中添加新行/记录,asp.net,vb.net,webforms,devexpress,aspxgridview,Asp.net,Vb.net,Webforms,Devexpress,Aspxgridview,我的问题很简单。我想获取行的新插入值,并相应地更新GridView和我的数据源 如图中突出显示的区域所示,我想在代码隐藏文件中获取此电子邮件和其他字段。我正在使用WebForms/VB.NET 这是我的aspx代码 <dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" EnableTheming="True" Theme="DevEx" OnDataBinding="

我的问题很简单。我想获取行的新插入值,并相应地更新GridView和我的数据源

如图中突出显示的区域所示,我想在代码隐藏文件中获取此电子邮件和其他字段。我正在使用
WebForms/VB.NET

这是我的aspx代码

<dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" EnableTheming="True" Theme="DevEx" 
        OnDataBinding="ASPxGridView1_DataBinding" 
        OnRowUpdating="ASPxGridView1_RowUpdating"
        OnRowInserting="ASPxGridView1_RowInserting"
        OnRowInserted="ASPxGridView1_RowInserted"
        >
        <Columns>
            <dx:GridViewCommandColumn VisibleIndex="0">
                <EditButton Visible="True"/>
                <NewButton Visible="True"/>
                <DeleteButton Visible="True" />
            </dx:GridViewCommandColumn>
            <dx:GridViewDataColumn FieldName="Email" VisibleIndex="2" Name="Email"> 
                <EditFormSettings Caption="Email" />
            </dx:GridViewDataColumn>
            <dx:GridViewDataColumn FieldName="FirstName" VisibleIndex="3" Name="FirstName" />
            <dx:GridViewDataColumn FieldName="LastName" VisibleIndex="4" Name="LastName" />
            <dx:GridViewDataColumn FieldName="Password" VisibleIndex="5" Name="Password" />
            <dx:GridViewDataColumn FieldName="RetryCount" VisibleIndex="6" Name="RetryCount" />
            <dx:GridViewDataColumn FieldName="MaxRetryCount" VisibleIndex="7" Name="MaxRetryCount" />
        </Columns>
        <SettingsPopup>
            <EditForm Width="600" />
        </SettingsPopup>
    </dx:ASPxGridView>
此链接令人困惑:

注意我没有使用
DataTable

正如我所怀疑的那样,您并没有缺少实体的实现 AspxGridView的框架。您正在分配EnitiyFramework 数据源到网格。可能你只是在创建一些列表 数据源及其分配

我建议您阅读下面的知识库和示例。它将让您知道如何在使用与EntityDataSource/EntityFramework绑定的ASPxGridView时实现常见场景

参考文献:



根据文档,您将从e.NewValues字典中获取行插入事件的值

手动积垢操作:

1) 插入: -处理ASPxGridView.RowInserting事件
-创建DataContext实例
-创建一个新的数据项并从e.NewValues字典中填充其属性
-向相应的表中添加新的数据项
-提交变更
-将eventArgs e.Cancel属性设置为“true”以取消插入操作
-调用ASPxGridView.CancelEdit方法关闭EditForm

您可以尝试以下方法:

  • 关闭编辑表单
  • 在aspxgridview上重新加载数据(这将刷新 数据源(作为数据网格):
  • 我将用c#表示,但概念是一样的:

    protected void dxGvCatalog_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
    {       
        // Here your code to save
    
        // Close edit form
        dxGvCatalog.CancelEdit();
        // reload Grid
        reloadAspxGridView();
    }
    
    public void reloadAspxGridView()
    {
        dxGvCatalog.DataSource = Class.ConsultAll();     // Change this to your data source
        dxGvCatalog.Enabled = true;
        dxGvCatalog.Visible = true;
        dxGvCatalog.DataBind();
    }
    

    那么,您如何向网格提供数据源呢。您应该能够在RowInserting事件中获取值。使用实体框架。
    protected void dxGvCatalog_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
    {       
        // Here your code to save
    
        // Close edit form
        dxGvCatalog.CancelEdit();
        // reload Grid
        reloadAspxGridView();
    }
    
    public void reloadAspxGridView()
    {
        dxGvCatalog.DataSource = Class.ConsultAll();     // Change this to your data source
        dxGvCatalog.Enabled = true;
        dxGvCatalog.Visible = true;
        dxGvCatalog.DataBind();
    }