2009-01-11 13 views
24

मैं एक ListView नियंत्रण से LayoutTemplate में एक नियंत्रण कैसे पहुँच सकता हूँ की LayoutTemplate एक नियंत्रण?पहुँच एक के अंदर एक ListView

मैं litControlTitle के लिए मिलता है और उसके Text विशेषता निर्धारित करने की जरूरत है।

<asp:ListView ID="lv" runat="server"> 
    <LayoutTemplate> 
    <asp:Literal ID="litControlTitle" runat="server" /> 
    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" /> 
    </LayoutTemplate> 
    <ItemTemplate> 
    </ItemTemplate> 
</asp:ListView> 

कोई विचार? शायद OnLayoutCreated घटना के माध्यम से?

उत्तर

36

इस प्रयास करें:

((Literal)lv.FindControl("litControlTitle")).Text = "Your text"; 
+0

मैंने शुरुआत में कोशिश की, लेकिन यह काम नहीं किया। तब मैं यहाँ आया था। हालांकि धन्यवाद! – craigmoliver

+3

बहुत ही अजीब ... मैं OnLayoutCreated की कॉलबैक के अंदर इस कोड को जगह, और जब मैं ListView बाँध यह ठीक ... – tanathos

+0

ओह, मैं अच्छी तरह से यह है कि घटना में डाल नहीं किया था, जो काम अब – craigmoliver

18

पूर्ण समाधान:

<asp:ListView ID="lv" OnLayoutCreated="OnLayoutCreated" runat="server"> 
    <LayoutTemplate> 
    <asp:Literal ID="lt_Title" runat="server" /> 
    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" /> 
    </LayoutTemplate> 
    <ItemTemplate> 
    </ItemTemplate> 
</asp:ListView> 

codebehind में:

protected void OnLayoutCreated(object sender, EventArgs e) 
{ 
    (lv.FindControl("lt_Title") as Literal).Text = "Your text"; 
} 
+0

यह ठीक काम करता है – Mahesh

+0

यह समाधान tanathos की तुलना में अधिक स्थिर है। टैनाथोस कभी-कभी काम नहीं करता है जब डेटाबिंड और उसी विधि में पहुंच होती है। – Gqqnbig

3

इस तकनीक टेम्पलेट लेआउट के लिए काम करता है; नियंत्रण से init घटना का उपयोग करें:

<asp:ListView ID="lv" runat="server" OnDataBound="lv_DataBound"> 
    <LayoutTemplate> 
    <asp:Literal ID="litControlTitle" runat="server" OnInit="litControlTitle_Init" /> 
    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" /> 
    </LayoutTemplate> 
    <ItemTemplate> 
    </ItemTemplate> 
</asp:ListView> 

और में कोड-पीछे (जैसे) ListView के databound घटना में इस्तेमाल के लिए नियंत्रण के लिए एक संदर्भ पर कब्जा:

private Literal litControlTitle; 

protected void litControlTitle_Init(object sender, EventArgs e) 
{ 
    litControlTitle = (Literal) sender; 
} 

protected void lv_DataBound(object sender, EventArgs e) 
{ 
    litControlTitle.Text = "Title..."; 
} 
0

नेस्टेड LV लूप के लिए:

void lvSecondLevel_LayoutCreated(object sender, EventArgs e) 
{ 
    Literal litText = lvFirstLevel.FindControl("lvSecondLevel").FindControl("litText") as Literal; 
    litMainMenuText.Text = "This is test"; 
} 
संबंधित मुद्दे