首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何引用Gridview TemplateField行?

如何引用Gridview TemplateField行?
EN

Stack Overflow用户
提问于 2016-10-27 04:59:45
回答 2查看 778关注 0票数 1

这是Gridview中的第10列的templatefield

代码语言:javascript
复制
<asp:TemplateField>
<HeaderTemplate>
<asp:Label runat="server">Active Licenses</asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblActiveCodes" runat="server" Text='intValues'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

这里是在foreach循环中引用它的地方。

代码语言:javascript
复制
foreach (GridViewRow row in gvCustomers.Rows)
{
    if (row.Cells[10].Text.Equals(0))
    {
        row.Visible = false;
    }
}

这是GridView中的第10列,我希望将值为0的单元格设置为不可见。intValues是来自数据库的intgvCustomers是我的GridViewID

为什么row.Cells[10]不能工作,但更重要的是,我们如何让它工作?

EN

回答 2

Stack Overflow用户

发布于 2016-10-27 05:06:42

将双引号加到零。文本类型为字符串。

代码语言:javascript
复制
if ((row.Cells[10].FindControl("lblActiveCodes") as Label).Text.Equals("0"))
票数 1
EN

Stack Overflow用户

发布于 2016-10-27 05:09:21

这里有很多问题。

首先,要将列绑定到标签文本,您需要使用Eval,您当前拥有的只是字面上的文本"intValues“。所以:

代码语言:javascript
复制
Text='<%# Eval("intValues") %>'

其次,label是一个服务器端控件。单元格将包含一个控件,而不是简单的文本。所以你应该寻找这个控件。顺便说一句,您可以对整行执行此操作,因此不需要计算列索引:

代码语言:javascript
复制
Label label = row.FindControl("lblActiveCodes") as Label;

第三,一旦value被绑定到标签文本,它现在就是一个字符串。如果列值不是字符串,则会通过ToString调用将其转换为字符串。所以:

代码语言:javascript
复制
if (label != null && label.Text != "0")
{
    row.Visible = false;
}

最后但并非最不重要的一点是,您没有提到何时运行这段代码。它并不总是有效的,网格视图已经绑定了数据。运行这样的东西的最佳时机是RowDataBound事件,在这种情况下,您不需要迭代行,并且您可以100%保证网格视图是数据绑定的,并且所有控件都已创建。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40272016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档