2008-12-10 67 views
0

问候!基于选定的DropDown值在回发上重新绑定

我有这必将XmlDataSources一个FormView内一个DropDownList:

<asp:FormView ID="MyFormView" runat="server" DataSourceID="MyXmlDataSource"> 
    <ItemTemplate> 
     <h1><%# XPath("SomeNode")%></h1> 
     <asp:Label ID="MyLabel" runat="server" AssociatedControlID="MyDdl" Text='<%# XPath("SomeOtherNode")%>' /> 
     <asp:DropDownList ID="MyDdl" 
          runat="server" 
          DataSourceID="MyDdlDataSource" 
          DataTextField="name" 
          DataValueField="value" 
          AutoPostBack="true" 
          OnSelectedIndexChanged="MyDdl_SelectedIndexChanged"> 
     </asp:DropDownList> 
    </ItemTemplate> 
</asp:FormView> 
<asp:XmlDataSource ID="MyXmlDataSource" runat="server" XPath="Root/MainSection" /> 
<asp:XmlDataSource ID="MyDdlDataSource" runat="server" XPath="Root/MainSection/Areas/*" /> 

在页面的代码隐藏,我有以下的OnLoad()方法,以及用于当所述下拉列表的选择指数的方法变化:

protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e); 

    if (!IsPostBack) 
    { 
     string xml = GetMyXml(0); // default value 
     MyXmlDataSource.Data = xml; 
     MyDdlDataSource.Data = xml; 
    } 
} 

protected void MyDdl_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DropDownList l_MyDdl = FindControl("MyDdl") as DropDownList; 
    int myVal; 
    if (l_MyDdl != null) 
     if (!Int32.TryParse(l_MyDdl.SelectedItem.Value, out myVal)) 
      myVal = 0; 
    string xml = GetMyXml(myVal); 
    MyXmlDataSource.Data = xml; 
    MyDdlDataSource.Data = xml; 
} 

当不同的值,从下拉列表中选择的SelectedIndexChanged被调用时,我无法获得下拉列表中的值(的FindControl始终返回null),以便用它来重新绑定数据源。我怎样才能得到这个价值?

回答

相关问题