【问题标题】:Dropdown not Updating lbl in Updatepanel下拉菜单不更新更新面板中的 lbl
【发布时间】:2015-01-23 19:45:07
【问题描述】:

情况: 更新面板内的复选框 不同更新面板内的多行文本框。 如果用户选中复选框,多行文本框会获得一个名称……这很好用。

HTML:

<asp:UpdatePanel ID="upTraveling" runat="server" 
    UpdateMode="Conditional"   ChildrenAsTriggers="False">   
    <ContentTemplate>                        
       <asp:CheckBox ID="cbRUTraveler" runat="server" Text="I am a Traveler" AutoPostBack="True" 
     oncheckedchanged="cbRUTraveler_CheckedChanged1" />
    </ContentTemplate>
</asp:UpdatePanel>
<td>
  <asp:UpdatePanel ID="upTravelers" runat="server" ondatabinding="cbRUTraveler_CheckedChanged1"
     UpdateMode="Conditional">
   <ContentTemplate>
    <asp:TextBox ID="tbTravelers" 
      Class="textwidth"   runat="server" TextMode="MultiLine" 
      placeholder="FName LName, FName  LName" required="required">
   </asp:TextBox>
  </ContentTemplate>
  <Triggers>
      <asp:AsyncPostBackTrigger 
       ControlID="cbRUTraveler" EventName="CheckedChanged" />
  </Triggers>
 </asp:UpdatePanel>

C#:

protected void cbRUTraveler_CheckedChanged1(object sender, EventArgs e)
{
   tbTravelers.Text = 
   RequesterBPL.RequesterTraveling(cbRUTraveler.Checked, tbTravelers.Text);
   going = cbRUTraveler.Checked;
}

我在同一页面上还有 2 个其他更新面板...一个更新面板中的下拉列表和另一个更新面板中的标签。当用户在下拉列表中选择一个值时...假设会触发标签中的名称放置。

HTML:

 <td>
     <asp:UpdatePanel ID="upManager" runat="server" 
        ondatabinding="ddlTeam_SelectedIndexChanged" 
         UpdateMode="Conditional">
          <Triggers>
              <asp:AsyncPostBackTrigger ControlID="ddlTeam" 
                EventName="SelectedIndexChanged" />                                         
          </Triggers>
          <ContentTemplate>
                 <asp:Label ID="lblManager" runat="server" >  </asp:Label>                                    
          </ContentTemplate>                                  
    </asp:UpdatePanel>                            
 </td>

C#:

 protected void ddlTeam_SelectedIndexChanged(object sender, EventArgs e)
 {
     //upManager.Update(); 
     lblManager.Text = 
     ManagerBPL.ReturnManagerName(ddlTeam.SelectedIndex);
 }       

但是,当用户在下拉列表中进行选择时,什么都不会发生。 直到用户选中与标签和下拉列表无关的复选框。一旦用户选中(或取消选中)复选框......标签就会填充下拉列表中的选择。

所有控件都在一个结构表中。我有脚本管理器。

根据我在网上阅读的内容,这可能是一个错误...如果不是错误,有没有人知道我哪里出错了...?

谢谢

【问题讨论】:

  • 请修复其余的混乱格式我为您修复了第一部分,当您将代码粘贴到编辑器中时,它真的很难阅读混乱的格式...
  • 我明白...我试图正确格式化它,但一定错过了一些东西。我无法再进行编辑...谢谢
  • 您是否真的通过了代码.. 这样做实际上会更有益,并且只发布与您没有看到预期的实际代码行相关的代码结果..如果您希望在下拉列表中发生某些事情..请确保您将AutoPostBack属性设置为=true

标签: c# checkbox asp.net-ajax updatepanel scriptmanager


【解决方案1】:

老实说,您可以在所有客户端执行此操作。一个简单的例子:

$(function () {
     $('#<%= drpContent.ClientID %>').blur(function () {
          var content = $('#<%= drpContent.ClientID %> option:selected').val();
          $('#lblContent').text(content);
     }     
});

我提供了带有 value 声明的初始示例。第二个例子是text 表示。

$(function () {
     $('#<%= drpContent.ClientID %>').blur(function () {
          var content = $('#<%= drpContent.ClientID %> option:selected').text();
          $('#lblContent').text(content);
     }     
});

Fiddle 的示例。这个例子虽然很简单,但比处理更新面板要容易得多。这种特殊的控制可能是一场噩梦,可能会非常痛苦。尽管您询问了 服务器 问题,但此选项更可行且更常见。

更新面板(缺点):

  • 在客户端/服务器端事件之间创建 pandomonium。
  • 将整个页面存储在内存中,然后重新创建(高性能)
  • 经常在 Asp.Net 页面生命周期中快速中断 Page-State。

希望这会有所帮助。

【讨论】:

  • 我刚刚发现了团队下拉列表和经理标签的问题......不如让我说......我刚刚开始工作。我在“lblManager”标签(不是 lblManagers)上放置了一个 AutoPostBack="true"。当用户选中复选框时,tbTravelers 没有自动回发。但是,当有人使用团队 ddl 时,lblManager 需要自动回发...我将不得不咀嚼一分钟...我必须让它工作....整个周末都在困扰我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多