DevExpress grid的RowValidating事件在e.NewValues上返回null

时间:2013-08-26 16:05:05

标签: c# asp.net devexpress aspxgridview

根据我一直在阅读的内容,e.NewValues应填充更新的新值,传递给它的FieldName。但我每次都会变空。

这是调试视图。我正在更改ShalePlay字段的值,并且RowValidating事件按预期触发。但是检查NewValue会返回null。

enter image description here

关于我在这里做错了什么想法?

编辑:加价:

<dx:ASPxGridView
ID="gvLocation"
runat="server"
AutoGenerateColumns="False"
DataSourceID="esmdsLocation"
ClientInstanceName="gvLocation"
ViewStateMode="Disabled"
KeyFieldName="LocationPK"
Width="600px"
OnCellEditorInitialize="gvLocation_CellEditorInitialize"
OnCommandButtonInitialize="gvLocation_CommandButtonInitialize"
OnStartRowEditing="gvLocation_StartRowEditing"
OnRowValidating="gvLocation_RowValidating">

<%--  <ClientSideEvents BeginCallback="
                        function(s, e) {loadingPanel.Show();}"
    EndCallback="
                        function(s, e) {loadingPanel.Hide();}" />--%>
<Columns>
    <dx:GridViewCommandColumn VisibleIndex="0">
        <EditButton Visible="True">
        </EditButton>
        <NewButton Visible="True">
        </NewButton>
    </dx:GridViewCommandColumn>
    <dx:GridViewDataHyperLinkColumn FieldName="LocationPK" ReadOnly="True" ShowInCustomizationForm="True" VisibleIndex="1">
        <DataItemTemplate>
            <a href="javascript:void(0);" onclick="gvLocation_LinkClick('<%# Container.VisibleIndex %>');"><%# DataBinder.Eval(Container.DataItem,"LocationPK") %></a>
        </DataItemTemplate>
    </dx:GridViewDataHyperLinkColumn>

    <dx:GridViewDataTextColumn FieldName="LocationName" ShowInCustomizationForm="True" VisibleIndex="2" />
    <dx:GridViewDataComboBoxColumn FieldName="FieldType" ShowInCustomizationForm="True" VisibleIndex="3" />
    <dx:GridViewDataComboBoxColumn FieldName="County" ShowInCustomizationForm="True" VisibleIndex="4" />
    <dx:GridViewDataComboBoxColumn FieldName="State" ShowInCustomizationForm="True" VisibleIndex="5" />
    <dx:GridViewDataComboBoxColumn FieldName="ShalePlay" ShowInCustomizationForm="True" VisibleIndex="6" />
</Columns>
<Settings ShowFilterBar="Visible" ShowFilterRow="True" ShowGroupPanel="True" />
<SettingsBehavior AllowFocusedRow="True" />
<SettingsLoadingPanel Mode="Disabled" />

1 个答案:

答案 0 :(得分:0)

听起来有可能发生两件事之一:

Possiblity 1。您在每次加载页面时都会填充GridView(将数据绑定到它),而不使用if(!Page.IsPostBack)过滤器。这会导致您的NewValues集合为空,因为Grid从数据源中重新填充。

你需要在页面加载的块中进行数据绑定:

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
        BindGrid();
    }
}

上面的“BindGrid”是用于将数据绑定到aspxGridView的任何进程/方法/代码。

可能性2。“ShalePlay”不是填充GridView的数据源中字段的名称。请注意,这可能与例如数据库中列的名称(取决于填充GridView的方式)不同。

为此,您需要检查数据源并确保字段名称符合您的预期。