ユーザーの入力を取得しようとしているポップアップに DropDownList があります。ユーザー入力を取得するための「onselectedIndexChanged」もあります。DropDownList のみが更新されるように、DropDownList 全体を updatePanel に保持しています (ポップアップは JQuery/JS を使用して作成されます)。JS を hiddenfield 値に使用し、それを別の関数に渡します) これが私のコードです:
<div id="ddlFiles">
<label>
Select new CaseFile:</label>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<asp:DropDownList runat="server" ID="ddlCaseFilesNew" DataSourceID="dsCaseFiles"
DataTextField="Display" DataValueField="FileID" OnPreRender="ddl_PreRender" Width="300px"
AutoPostBack="true" OnSelectedIndexChanged="ddlCaseFilesNew_SelectedIndexChanged">
<asp:ListItem>Item 1</asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlCaseFilesNew" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
</div>
ここに私のselectedIndexChangedがあります:
<script runat="server">
protected void ddlCaseFilesNew_SelectedIndexChanged(object sender, EventArgs e)
{
hidNewCaseFile.Value = ddlCaseFilesNew.SelectedItem.Value;
}
</script>
何らかの理由で、リストから何かを選択するとすぐに、「リソースが見つかりません」ページに移動します。なぜそれをするのかわかりません。私のURLは次のようになります:
http://localhost:49355/base/Expenses/ViewExpenses.aspx?CaseFileID=2001
値を選択しようとすると、エラー (リソースが見つかりません) ページが開き、リンクが見つかりませんと表示されます。
エラーの写真は次のとおりです。
ページロード:
Response.Cache.SetAllowResponseInBrowserHistory(false);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
if (!isLoggedIn())
return;
if (Request.QueryString["ExpenseID"] != null)
{
if (!IsPostBack)
{
ddlCaseFilesNew.DataSourceID = "dsCaseFiles";
ddlCaseFilesNew.SelectedIndex = -1;
ddlCaseFilesNew.DataTextField = "Display";
ddlCaseFilesNew.DataValueField = "FileID";
ddlCaseFilesNew.DataBind();
if (Request.QueryString["CaseFileID"] != null) // from view>casefiles>casefile#>notes
hidCaseFile.Value = Request.QueryString["CaseFileID"].ToString();
}
}
if (Request.QueryString["CaseFileID"] != null) // from view>casefiles>casefile#>notes
hidCaseFile.Value = Request.QueryString["CaseFileID"].ToString();
else if (Request.QueryString["FileID"] != null && Request.QueryString["TaskID"] != null) // from view>task>specific task notes
{
hidCaseFile.Value = Request.QueryString["FileID"].ToString();
hidTaskID.Value = Request.QueryString["TaskID"].ToString();
}
}
protected void ddl_PreRender(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
try
{
if (ddl.Items[0].Value != "-1")
ddl.Items.Insert(0, new ListItem("--Select--", "-1"));
}
catch
{
ddl.Items.Insert(0, new ListItem("--Select--", "-1"));
}
}