string percentage = e.Row.Cells[7].Text;
我试图用我的GridView做一些动态的事情,所以我给RowDataBound事件编了一些代码。我试图从一个特定的单元格中获取数值,这个单元格是一个模板字段。但上面的代码似乎总是返回一个空字符串。
有什么想法吗?
为了说明问题,这里有一点违规的单元格:
<asp:TemplateField HeaderText="# Percentage click throughs">
<ItemTemplate>
<%# AddPercentClickThroughs((int)Eval("EmailSummary.pLinksClicked"), (int)Eval("NumberOfSends")) %>
</ItemTemplate>
</asp:TemplateField>
与此相关的是,有谁知道是否有更好的方法来选择该行的单元格。输入 "cell[1]"很糟糕。难道我不能用cell["mycellname"]
,这样如果我决定改变单元格的顺序,就不会出现错误?
首先你需要将你的代码包裹在一个Label'或
Literal'控件中,这样你就可以正确地引用它。现在的情况是,系统没有办法跟踪它,因为没有与文本相关的控件。控件有责任将其内容添加到viewstate中。
你需要使用gridView.FindControl("controlName");来获得该行的控件。从那里你可以得到它的属性,包括 "文本"。
你还可以获得有关行的DataItem属性,并将其转换为适当的类型,直接提取信息。