我使用 Javascript 读取 Telerik radgrid 组件的行没有问题,但我似乎可以在回发发生时找到访问行数据服务器端的方法。我花了很长时间寻找解决方案,但没有运气。任何指针将不胜感激。
托尼
您可能想查看 OwnerTableView 对象的DataKeyValues属性,它可以让您访问表示给定行中的字段的值的集合。我在 EditCommand 事件处理程序期间使用它,因为如果我的站点用户单击链接以编辑网格中的一行,他们将被定向到编辑页面,并且我需要传递有关查询中给定行的某些信息细绳。
如果事实证明这是您所需要的,您还需要定义哪些字段应通过此属性可用。为此,请查看网格属性表中的 MasterTableView.DataKeyNames 属性。您基本上指定了一个以逗号分隔的字段名称列表。
服务器端是简单的部分:
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");
}
这是对我有用并使用 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()));
}
}
如果您在标记或页面初始化中为动态控件正确创建了控件,则 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;
}
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