【问题标题】:Accessing Row Data In Telerik RadGrid (Server Side)在 Telerik RadGrid(服务器端)中访问行数据
【发布时间】:2010-09-30 04:23:21
【问题描述】:

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

托尼

【问题讨论】:

  • 网格是否可编辑?还是您只是想获取网格中的数据?

标签: asp.net telerik


【解决方案1】:

如果您在标记或页面初始化中为动态控件正确创建了控件,那么 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;
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      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
      

      【讨论】:

        【解决方案4】:
        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");
        }
        

        【讨论】:

          【解决方案5】:

          服务器端是最简单的部分:

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

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

            • 嗨,克里斯,谢谢你。这对于绑定到网格的项目没有问题。您知道如何访问添加到网格中的文本框,这些文本框未绑定但用于捕获用户为该列输入的任何与行相关的输入谢谢,Tony
            • 到目前为止,我只处理了绑定列,但请查看 telerik.com/help/aspnet/grid/…telerik.com/help/aspnet/grid/…,它们可能会有所帮助。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多