9

我使用 Javascript 读取 Telerik radgrid 组件的行没有问题,但我似乎可以在回发发生时找到访问行数据服务器端的方法。我花了很长时间寻找解决方案,但没有运气。任何指针将不胜感激。

托尼

4

6 回答 6

16

您可能想查看 OwnerTableView 对象的DataKeyValues属性,它可以让您访问表示给定行中的字段的值的集合。我在 EditCommand 事件处理程序期间使用它,因为如果我的站点用户单击链接以编辑网格中的一行,他们将被定向到编辑页面,并且我需要传递有关查询中给定行的某些信息细绳。

如果事实证明这是您所需要的,您还需要定义哪些字段应通过此属性可用。为此,请查看网格属性表中的 MasterTableView.DataKeyNames 属性。您基本上指定了一个以逗号分隔的字段名称列表。

于 2009-01-08T04:58:26.857 回答
3

服务器端是简单的部分:

GridItemCollection gridRows = TestGrid.Items;
foreach (GridDataItem data in gridRows)
{
    ItemClass obj = (ItemClass)data.DataItem;
}

这是我不知道的客户端部分!:[

于 2009-03-06T21:50:57.417 回答
2
private Int32 GetID()
{
    foreach (Telerik.Web.UI.GridDataItem dataItem in radGrid.MasterTableView.Items)
    {
        if (dataItem.Selected == true)
        {
            Int32 ID = (Int32)dataItem.GetDataKeyValue("ID");
            return ID;
        }
    }
    throw new ArgumentNullException("Id Not found");
}
于 2010-03-21T23:43:04.497 回答
1

这是对我有用并使用 RadGrid.SelectedItems 集合的那个。

protected void LinkButton1_Click(object sender, EventArgs e)
    {
        List<Guid> OrderIdList = new List<Guid>();

        foreach (GridDataItem OrderItem in this.RadGrid1.SelectedItems)
        {
            OrderIdList.Add(new Guid(OrderItem.GetDataKeyValue("OrderId").ToString()));
        }
    }
于 2011-05-12T20:37:32.460 回答
0

如果您在标记或页面初始化中为动态控件正确创建了控件,则 RadGrid 将正确恢复状态。

您可以像下面的示例一样访问从数据源加载的初始值,前提是您告诉有问题的表视图将列保留在数据键中。

protected T GetInitialGridData<T>(GridDataItem item, string uniqueColumnName) {
   item.ThrowIfNull("item");
   uniqueColumnName.ThrowIfNullOrEmpty("uniqueColumnName");

   return (T)item.OwnerTableView.DataKeyValues(gridItem.ItemIndex)(columnName);
}

如果您使用的是动态自定义模板列,并且需要获取现在可能处于其状态的任何值,则可以使用:

protected string GetCustomTextBoxValue(GridDataItem item, string controlID) {
   item.ThrowIfNull("item");
   controlID.ThrowIfNullOrTrimmedEmpty("controlID");

   return ((TextBox)item.FindControl(controlID)).Text;
}
于 2011-06-16T23:34:48.950 回答
-1
private Int32 GetID()
{
    foreach (Telerik.Web.UI.GridDataItem dataItem in radGrid.MasterTableView.Items)
    {
        if (dataItem.Selected == true)
        {
           // Int32 ID = (Int32)dataItem.GetDataKeyValue("ID");
Int32 ID =Convert.ToInt32(dataItem.GetDataKeyValue("ID"));
            return ID;
        }
    }

}
//this will work
于 2010-06-04T07:47:57.433 回答