我有這必將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()方法,以及用於回發期間獲得的選定值下拉列表的方法:
private m_key;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
string xml_data;
if (!IsPostBack)
{
xml_data = GetMyXml(0); // default value
MyXmlDataSource.Data = xml_data;
MyDdlDataSource.Data = xml_data;
}
else
{
GetSelections();
xml_data = GetMyXml(m_key);
MyXmlDataSource.Data = xml_data;
MyXmlDataSource.DataBind();
}
}
private void GetSelections()
{
DropDownList l_MyDdl = FindMyControl<DropDownList>("MyDdl");
if (l_MyDdl != null)
if (!Int32.TryParse(l_MyDdl.SelectedItem.Value, out m_key))
m_key = 0;
}
一切都很好,直到回發作爲下拉列表更改的結果發生。發生這種情況時,我從下拉列表中獲取所選項目的值,並將下拉列表中的值作爲參數傳遞給我的GetMyXml()方法,然後將FormView的數據源設置爲GetMyXml中新返回的XML數據( )。我在回發期間查看了「xml_data」的值,它絕對正確。但是,FormView(如XPath(「SomeNode」))頁面上顯示的值是發生回發之前的值,而不是xml_data中返回的值。爲什麼會發生這種情況,我將如何着手解決它?提前致謝。
出於某種原因,當我嘗試的時候,我得到一個空引用異常。爲什麼會這樣? – Bullines 2008-12-11 14:14:09