为什么当 UpdateCommand 为 运行 时 Telerik RadGrid KeyValues 字符串为空?

Why is the Telerik RadGrid KeyValues string empty when UpdateCommand is running?

在调试 RadGrid1_UpdateCommand 时,我注意到 GridEditableItem 的键值是空的(只是一组括号)。有 49 个 SavedOldValues。源自网格的数据 table 上有一个主键。
网格数据源是在C#代码中手动指定的。

为什么 KeyValues 会是空的?

您是否为 RadGrid 的 MasterTableView 元素上的 DataKeyNames 属性指定了键名?假设你的 PK 列被称为 ID,那么你可以像这样分配它。

<telerik:RadGrid runat="server" ID="radgrid1">
    <MasterTableView DataKeyNames="ID">
        <Columns>...</Columns>
    </MasterTableView>
</telerik:RadGrid>

然后就可以通过DataKeyValues集合获取键值,然后转换为整数使用。

protected void radgrid1_UpdateCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
    var keyValue = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["ID"].ToString();
    int id = Convert.ToInt32(keyValue);
}