0

ユーザーの入力を取得しようとしているポップアップに 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"));
    }

}
4

1 に答える 1

1

UpdatePanel に UpdateMode="Conditional" を設定してから、もう一度試してください。

<asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
于 2012-10-01T19:46:48.253 に答える