服务器端我想使用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>
答案 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