繁体   English   中英

数据列表中的手风琴中的文本框…findcontrol不起作用

[英]TextBox inside Accordion inside Datalist… findcontrol not working

我搜寻过,但没有运气...

我在手风琴控件中有一个文本框,在数据列表中...我想允许手风琴表单提交一些值,但是我无法从文本框中获取这些值,并且findcontrol无法正常工作。

<asp:DataList ID="AddProjectDataList" runat="server">
<ItemTemplate>

 <asp:HiddenField ID="clientid" runat="server" Value='<%# Eval("mmmclientlistid") %>'></asp:HiddenField>
  <asp:Table ID="ProjectTableClass" runat="server" style="width:600px;height:600px"><asp:TableRow><asp:TableCell VerticalAlign="Top">
<b>New <asp:Label ID="ProjectTypeLabel" Text='<%# Eval("ProjectTypeName") %>' runat="server"></asp:Label> Project</b>
      <table class="AddProject" cellpadding="5">
          <tr>
              <td valign="top">
                  <b>Campaign</b> information:
              </td>
              <td>


                  <asp:DropDownList ID="DDCampaignList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="OnChange_selectCampaign" AppendDataBoundItems="True" >
                      <asp:ListItem Text="SELECT A CAMPAIGN:" Value="-1"></asp:ListItem>
                  </asp:DropDownList>
                  <br />



                  <ajaxToolkit:Accordion
ID="CampaignAccordion"
runat="Server"
SelectedIndex="1"
HeaderCssClass="accordionHeader"
HeaderSelectedCssClass="accordionHeaderSelected"
ContentCssClass="accordionContent"
AutoSize="None"
FadeTransitions="true"
TransitionDuration="250"
FramesPerSecond="40"
RequireOpenedPane="false"
SuppressHeaderPostbacks="true">
<Panes>
    <ajaxToolkit:AccordionPane ID="AccordionPane1" runat="server"
        HeaderCssClass="accordionHeader"
        HeaderSelectedCssClass="accordionHeaderSelected"
        ContentCssClass="accordionContent">
        <Header> 
            <asp:LinkButton ID="AddCampaignLink" runat="server">Or Click to Add New Campaign</asp:LinkButton> </Header>
        <Content> 
                             <asp:TextBox ID="campaignNameTextBox" Style="width: 400px" runat="server"></asp:TextBox><br />
                  Description (optional):<br />
                  <asp:TextBox ID="campaignDescriptionTextBox" runat="server" TextMode="MultiLine"
                      Columns="30" Rows="3"></asp:TextBox>
            <br />
            <asp:Button ID="AddCampaignButton" runat="server" Text="Add New Campaign" OnClick="AddCampaign_Click" />
        </Content>
    </ajaxToolkit:AccordionPane>        
</Panes>            
<HeaderTemplate>...</HeaderTemplate>
<ContentTemplate>...</ContentTemplate>

然后在代码背后

protected void AddCampaign_Click(object sender, EventArgs e)
    {
        //click to add campaign
        //campaignname
        //clientid



            HiddenField EID = (HiddenField)FindControl("HiddenFieldEID");
            TextBox campaignNameTextBox = (TextBox)AddProjectDataList.Items[0].FindControl("campaignNameTextBox");
            TextBox campaignDescriptionTextBox = (TextBox)AddProjectDataList.Items[0].FindControl("campaignDescriptionTextBox");

            tbl_campaign newcampaign = new tbl_campaign();
            newcampaign.clientID = Convert.ToInt32(DDClientList.SelectedValue); 
            newcampaign.employeeID = Convert.ToInt32(HiddenFieldEID.Value);
            newcampaign.campaignName = campaignNameTextBox.Text;
            newcampaign.campaignDescription = campaignDescriptionTextBox.Text;


            db.AddTotbl_campaign(newcampaign);

            db.SaveChanges();
    }

如果我摆脱了手风琴窗格,它就可以正常工作。 该控件位于没有问题。 但是有了手风琴,就没有这种运气了。 (“ hiddenFieldEID”字段的位置很好,因为它在手风琴的外面。)

我在DataList控件中需要一个单独的onItemDataBound事件吗? 如果是这样,那里面有什么,如何将其与buttonclick事件联系起来?

谢谢!

好吧,我可能刚刚想通了。

我这样做:

                Control CampaignAccordion = (Control)AddProjectDataList.Items[0].FindControl("CampaignAccordion");
            TextBox campaignNameTextBox = (TextBox)CampaignAccordion.FindControl("campaignNameTextBox");
            TextBox campaignDescriptionTextBox = (TextBox)CampaignAccordion.FindControl("campaignDescriptionTextBox");

而且有效。 没有单独的数据绑定事件。 这是正常的做法吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM