Доступ к данным строк в Telerik RadGrid (на стороне сервера)

StackOverflow https://stackoverflow.com/questions/422783

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня нет проблем с использованием Javascript для чтения строк компонента telerik radgrid, который я использую, однако, похоже, я все равно могу найти доступ к стороне сервера данных строк, когда происходит обратная передача.Я потратил целую вечность на поиски решения, но безуспешно.Мы были бы весьма признательны за любые указания.

Тони

Это было полезно?

Решение

Возможно, вы захотите взглянуть на Ключевые значения данных свойство объекта 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()));
        }
    }

Если вы правильно создали свои элементы управления в markup или page 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