【问题标题】:List<Tuple<T1,T2>> as DataSource for GridViewList<Tuple<T1,T2>> 作为 GridView 的数据源
【发布时间】:2011-09-09 02:03:43
【问题描述】:

我想为我的GridView 添加一个List&lt;Tuple&lt;T1,T2&gt;&gt; 作为DataSource

“那就做吧!”

是的,这不是真正的问题,问题在于访问 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 是组,Namestring-属性。
他(是的,他,我的 IDE 叫 Bob)显然没有找到 Item1.Name,有什么办法可以逃脱 . 吗?

谢谢,

丹尼斯

【问题讨论】:

  • Bob?.. 你的代码是Microsoft Bob?..
  • 不,我使用 Bob 2010 Professional 编写代码!
  • 相对于那些从艺术学校辍学的懒散鲍勃......

标签: c# asp.net list gridview tuples


【解决方案1】:

在您的代码隐藏中订阅 RowDataBound 事件,该事件将为绑定的每一行触发,您可以使用提供给事件的参数来获取当前数据项 - 您会发现更容易以这种方式获得你的价值观,而不是试图弄乱数据绑定语法等。

(ps - 记得检查事件处理程序中的 rowtype 属性,这是一个容易犯的错误 - 如果你试图访问页眉/页脚行的数据对象,你会得到意想不到的结果/错误!-上面的链接有一些代码可以证明这一点)

【讨论】:

  • 投票已锁定,抱歉。再次单击向上箭头也会将其删除,单击向下箭头实际上会将其更改为 -1,我们不希望这样,对吧!?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多