我想为List<Tuple<T1,T2>>
添加DataSource
GridView
。
“然后去做!”
是的,这不是问题所在,问题是访问GridView中的值。
这是我的代码:
List<Tuple<Group, string>> userGroups = Util.PrepareGroups((string[][])Session["userGroups"]);
gridGroups.DataSource = userGroups;
gridGroups.DataBind();
在DataBind
引发异常,告诉我Item1.Name不存在,说到这里,这是我的标记:
<asp:GridView runat="server" ID="gridGroups" CssClass="grid gridGroups" AutoGenerateColumns="false">
<Columns>
<asp:BoundField meta:resourcekey="gridGroupsName" DataField="Item1.Name" />
<asp:BoundField meta:resourcekey="gridGroupsFunction" DataField="Item2" />
</Columns>
</asp:GridView>
毋庸置疑,Item1
是群组,Name
是string
- 属性。
他(是的,他,我的IDE叫Bob)显然找不到Item1.Name,有没有办法逃脱.
?
谢谢,
丹尼斯
答案 0 :(得分:3)
订阅代码隐藏中的RowDataBound事件,该事件将触发绑定的每一行,您可以使用提供给事件的参数来获取当前数据项 - 您将找到它比尝试使用数据绑定语法等更容易获得您的值。
(ps - 记得检查事件处理程序中的rowtype属性,这是一个容易犯的错误 - 如果你试图访问页眉/页脚行的数据对象,你会得到意想不到的结果/错误! - 上面的链接有一些代码可以证明这一点)