繁体   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