2014-02-20 88 views
0

服務器端我想要從DetailsView中的TemplateView的Templatefield中使用HeaderText,該字符串將作爲標籤的文本值返回,該標籤是Templatefield。如何引用的HeaderText「關愛計劃意向書」明確在後面的代碼按名稱而不使用索引,然後在字符串中使用它來代替該標籤的文本價值,是一個SQL數據源,如果該值的評估和演示不符合某些crieria。 例如在下面的例子中,如果評估和演示(「CarePlanIntent」)的值就可以了,然後一切都很好,否則我想的東西,如「來取代它要麼護理計劃意向尚未進入或不符合設定標準「。通過文本值而不是索引來引用TemplateField的HeaderText

<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

您可以使用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"; 

類似的東西....我可能有一些屬性或方法不對的;但它應該是這樣的。

+0

對不起,但我們的設置有點古老,我們沒有LINQ。與.net 2.0兼容嗎?由於 –

0

根據您的樣品,可以在裏面詳細查看由標題文本找到適當的模板字段,而不是獲取標籤。

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

這是否公正也不返回標籤值而不是標籤的模板列的的HeaderText? –

+0

@PaulStevens對不起,我誤解你的問題的某些部分。然而,具體是什麼,你通過名稱引用模板列是什麼意思?如通過標題文本?如果是這樣,那將是多餘的不是?您將通過使用相同的文本獲取標題文本。你已經知道那個標題文本。如果通過另一個標識符,那麼我相信只有索引。對不起,如果我誤解了一些東西。 – singularhum

相關問題