使用LINQ从RadGridView获取DataKeyValues列表

本文关键字:DataKeyValues 列表 获取 RadGridView LINQ 使用 | 更新日期: 2023-09-27 18:13:47

我使用的是Telerik RadGrid,并具有唯一名称"ChangeAddr"的gridtemplatecoluml。基本上,用户将选中一个或多个框,然后单击"更改地址"按钮,这样用户就可以更改所选行/产品的地址。

复选框id为chkChangeAddr。DataKeyName为OrderProductID。

现在,这是我为用户单击按钮时编写的代码:

var OrderProductIDs = (from GridDataItem item in rgShipProducts.Items
                               where ((CheckBox)item.FindControl("chkChangeAddr")).Checked
                               select int.Parse(rgShipProducts.MasterTableView.DataKeyValues[item.ItemIndex]["OrderProductID"].ToString())).ToList();

但是,它不返回任何东西。

如果它有帮助,我有一个OnItemDataBound事件,我可以成功地检索DataKeyValue使用相同的代码片段:

rgShipProducts.MasterTableView.DataKeyValues[item.DataSetIndex]["OrderProductID"].ToString()

所以,看起来我没有"访问"每个项目或其他东西。我用常规的listview做过这个,但从来没有在RadGrid上做过。如有任何帮助,我将不胜感激。

谢谢,安德鲁。

使用LINQ从RadGridView获取DataKeyValues列表

试试下面的代码。

List<GridDataItem> Items = (from item in rgShipProducts.MasterTableView.Items.Cast<GridDataItem>()
                                where  ((CheckBox)item.FindControl("chkChangeAddr")).Checked
                                select item).ToList();
    if (Items.Count > 0)
    {
        string strkey = Items[0].GetDataKeyValue("ID").ToString();
    }