簡體   English   中英

Juice UI-手風琴中的文本框問題

[英]Juice UI - Textbox inside accordion issue

我無法檢索手風琴面板內的文本框的內容。 我的標記如下:

<juice:Accordion ID="Accordion1" runat="server">

<juice:AccordionPanel ID="AccordionPanel1" runat="server" Title="Media ID">
<PanelContent>
  <asp:Label ID="LabelMediaID" runat="server" Text="Media ID"     AssociatedControlID="TextBoxMediaID"></asp:Label>    
  <asp:TextBox ID="TextBoxMediaID" runat="server"></asp:TextBox>
</PanelContent>
</juice:AccordionPanel>

當用戶單擊按鈕時,將觸發我的服務器端代碼:

protected void ButtonSearch_Click(object sender, EventArgs e)
{
    // Retrieve controls within accordion panels
    TextBox TextBoxMediaID = (TextBox)AccordionPanel1.FindControl("TextBoxMediaID");
    string mediaID= "abc";
    if (TextBoxMediaID != null)
        mediaID= TextBoxMediaID.Text;

我能夠成功檢索文本框控件,但是當我嘗試訪問其Text屬性時,它始終為空。

有人能幫我嗎? 恐怕我對ASP.NET,Juice等世界還算陌生。謝謝。

原來,我的問題是由擁有使用母版頁的ASP.NET項目引起的。

如果您不使用母版頁,則

TextBox TextBox1 = (TextBox)AccordionPanel1.FindControl("TextBox1");
string content= Request.Form[TextBox1.UniqueId];

完美地工作。 但是,在將母版頁與ContentPlaceHolder一起使用時,請使用以下代碼:

ContentPlaceHolder cph = (ContentPlaceHolder)Master.FindControl("MainContent");
TextBox TextBox1 = (TextBox)AccordionPanel1.FindControl("TextBox1");
string content= Request.Form[cph.UniqueID + "$" + TextBox1.UniqueId];

希望這可以節省很多時間!

選項1-快速修復

對於您的頁面,在頁面指令中使ClientIDMode="static" ,然后使用Request.Form["TextBoxMediaID"]獲取文本框的值。

選項2-偵錯

進入調試模式,然后嘗試AccordionPanel1.Controls[0].("TextBoxMediaID"); AccordionPanel1.Controls[0].Controls[0].("TextBoxMediaID"); 因為您不知道有多少個服務器端控件。 一種簡單的解決方案是使用查找控件遞歸函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM