ASP.NET Web フォームにドロップダウン リストがあります。自動ポストバックに設定され、ビューステートが有効になっています。Visual Studio からプロジェクトを実行すると、値を変更し、ポストバックで新しい値を取得して、関連する結果をグリッド (インフラジスティックス) に表示できます。値を変更し続けることができ、グリッドは正しく更新されます。
これをテスト/開発ボックスからライブ Windows 2008 サーバーにコピーすると、すべてが変更されます。ドロップダウンへの最初の変更によってポストバックが発生しますが、ドロップダウン リストの SelectedIndexChanged イベントが発生しないため、グリッドは更新されません。2 番目の変更は、ドロップダウンを完全にクリアします。
ドロップダウンの項目は、コントロールの Items コレクションに追加される単純な ListItems としてページが最初に読み込まれるときに作成されます。値は Microsoft CRM システムから取得されますが、データにバインドされていません。
何が問題なのか、Visual Studio での動作が実際の動作と異なる理由を説明できる人はいますか?
protected void Page_Load(object sender, EventArgs e)
{
_crm = GetCrmConnection();
if (!IsPostBack)
{
ShowDepotList();
ShowJobsForCurrentDepot(); // Updates the grid - not shown in SO
}
}
private void ShowDepotList()
{
List<BusinessEntity> depots = _crm.GetDepots();
foreach (DynamicEntity depot in depots)
{
string depotName = depot.Properties["dpt_name"].ToString();
string locationName = depot.Properties["dpt_locationname"].ToString();
ListItem depotListItem = new ListItem
{
Text = string.Format("{0} - {1}", depotName, locationName),
Value = ((Key)depot.Properties["dpt_sitedetailid"]).Value.ToString()
};
DepotInput.Items.Add(depotListItem);
}
}
protected void DepotInput_SelectedIndexChanged(object sender, EventArgs e)
{
ShowJobsForCurrentDepot();
}