2008-12-10 61 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),以便用它來重新綁定數據源。我怎樣才能得到這個價值?

回答

相關問題