gpt4 book ai didi

c# - 如何使用键将 DataTextField 绑定(bind)到字典值

转载 作者:行者123 更新时间:2023-11-29 03:37:56 24 4
gpt4 key购买 nike

我正在使用 Telerik 的 RadGrid,我希望能够将动态创建的列的 DataTextField 绑定(bind)到我用作数据源的对象内的字典中的值。

我有一个类结构如下:

public class MyClass
{
public AnObject ThisObject = null;
public Dictionary<int, ClassWithStuff> AnotherObject = new Dictionary<int, ClassWithStuff>();
}

我正在动态创建列,我想以这种方式设置列的 DataTextField:

foreach (var item in ListOfPeople.OrderBy(r => r.FormattedName))
{
var col = new GridHyperLinkColumn();
rgGrid.MasterTableView.Columns.Add(col);
col.HeaderText = item.FormattedName;
col.NavigateUrl = string.Format("~/Person.aspx?id={0}", item.OID);
col.UniqueName = item.OID.ToString();
col.DataTextField = "AnotherObject[" + item.OID + "].Person.FormattedName";
}

如果数据源已设置为 MyClass 的对象列表,并且填充该字典时,OID 将用作字典键。

这基本上是一个带有 MySQL 后端的数据透视表的 radgrid View 。这是否可能,或者对于 DataTextField 来说,深入字典项目会太多吗?我在这里看到的大多数问题都与下拉菜单有关,这不是我正在尝试的。

最佳答案

我遇到了完全相同的问题。

我发现将 GridHyperLinkColumnDataTextField 绑定(bind)到字典值的唯一方法是在网格的 ItemDataBound 事件上。

以下示例基于您的示例结构:

...
// set temporary the ID as a text
col.Text = item.OID.ToString();
YourGrid.ItemDataBound += OnYourGridItemBound;
...
private static void OnYourGridItemBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
GridDataItem dataBoundItem = e.Item as GridDataItem;
if (dataBoundItem != null)
{
foreach (TableCell cell in dataBoundItem.Cells)
{
if (cell.Controls.Count > 0)
{
var link = cell.Controls[0] as HyperLink;
if (link != null)
{
var dataItem = dataBoundItem.DataItem as MyClass;
var id = link.Text;
link.Text =
dataItem.AnotherObject[id].Person.FormattedName;
}
}
}
}
}

我希望这对你有用。

关于c# - 如何使用键将 DataTextField 绑定(bind)到字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com