下拉列表不在Updatepanel中更新lbl

时间:2015-01-23 19:45:08

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

情况: 更新面板内的复选框 不同updatepanel中的多行文本框。 如果用户选中该复选框,则多行文本框会获得一个名称...这样可以正常工作。

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个其他更新面板...一个updatepanel中的下拉列表和另一个updatepanel中的标签。当用户在下拉列表中选择一个值时...它会假设在标签中触发名称放置。

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);
 }       

但是,当用户在下拉列表中进行选择时,没有任何反应。 直到用户选中与标签和下拉列表无关的复选框。一旦用户检查(或取消选中)复选框...标签将填充下拉列表中的选项。

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

从我在网上看到的这可能是一个错误...如果没有错误,任何人都会看到我可能出错的地方......?

由于

1 个答案:

答案 0 :(得分: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。
  • 将整个页面存储在内存中,然后重新创建(Performance Heavy)
  • 经常在 Asp.Net页面生命周期中快速中断页面状态。

希望这有帮助。