使用Javascript读取telerik radgrid组件的行没有问题,但是当发生回发时我似乎无论如何都会发现访问行数据服务器端。我花了很多年寻找解决方案,但没有运气。 任何指针都将非常感激。

有帮助吗?

解决方案

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

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

其他提示

我有一段时间使用Telerik网格,并在他们的文档中发现了这些文章,关于如何从选定的行服务器或客户端获取数据:

服务器端 客户端

希望你会发现它们有用。

迪克

服务器端很容易:

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

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

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");
}
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

这是适合我并使用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()));
        }
    }

如果您在标记或页面init中为动态控件正确创建了控件,那么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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top