通过文本值而不是索引引用TemplateField的HeaderText

时间:2014-02-20 00:43:37

标签: asp.net vb.net .net-2.0

服务器端我想使用String中DetailsView的Templatefield中的HeaderText,该String将作为Templatefield的孙子标签的文本值返回。如何通过名称而不是使用索引在后面的代码中显式引用HeaderText“Care Plan Intent”,然后在字符串中使用它来替换标签的文本值,如果值为sql数据源的Eval不符合某些条件。 例如,在下面的例子中,如果Eval(“CarePlanIntent”)的值是好的那么一切都很好,否则我想用“没有输入任何护理计划意图”或“它不符合设置”之类的东西替换它标准”。

<asp:DetailsView ID="dvTest">
<Fields>
<asp:TemplateField HeaderText="Care Plan Intent:">
    <ItemTemplate>
        <asp:Label skinid="tablabelblack" id="lblIntent" runat="server" Text='<%# Eval("CarePlanIntent") %>' />
    </ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>

2 个答案:

答案 0 :(得分:0)

您可以使用LINQ执行此操作:

var field = dvText.Fields.First(i => i.HeaderText == "Care Plan Intent:");
var lbl = (Label)field.FindControl("lblIntent");

if (lbl.Text == "Y")
  lbl.Text = "New Text";

类似的东西....我可能有一些错误的属性或方法;但它应该是那样的。

答案 1 :(得分:0)

根据您的示例,您可以在详细信息视图中获取标签,而不是按标题文本查找正确的模板字段。

Dim lblIntent As Label = CType(dvTest.FindControl("lblIntent"), Label)
If lblIntent.Text <> "Your Condition" Then
    lblIntent.Text = "Some New Text"
End If