ユーザーがDropDownListから選択した値を取得するのに問題がありました。値をリセットして再割り当てできるようにするには、ポストバックが必要であることがわかりました。(ページコントロールでClientIDMode = "static"のようなものを試し、 "var dropDownList = $(<%= ddlNewCaseFiles.ClientID%>)。val()を実行しました)が、何も機能しないようです。ヘッダ:
<script runat="server">
protected void ddlCaseFilesNew_SelectedIndexChanged(object sender, EventArgs e)
{
hidNewCaseFile.Value = ddlCaseFilesNew.SelectedItem.Value;
}
</script>
更新された値が選択されているようです。しかし、何らかの理由でアイテムをクリックすると、「リソースが見つかりません」ページに移動します。DropDownListにUpdatepanelを追加すると、おそらく修正されると思いますか?(dropDownListをポストバックするだけなので)。しかし、私はそれに問題を抱えています。
これは私のドロップダウンリストです:
<div id="ddlFiles">
<label>
Select new CaseFile:</label>
<asp:DropDownList runat="server" ID="ddlCaseFilesNew" DataSourceID="dsCaseFiles"
DataTextField="Display" DataValueField="FileID"
OnPreRender="ddl_PreRender" Width="300px" AutoPostBack="true"
onselectedindexchanged="ddlCaseFilesNew_SelectedIndexChanged"/>
</div>
ここで実装しようとしましたが、「UpdatePanelには「dropDownList」というプロパティ名がありません」というメッセージが表示されます。どんな助けでも完全に理解されるでしょう。:
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<asp:DropDownList runat="server" ID="ddlCaseFilesNew" DataSourceID="dsCaseFiles"
DataTextField="Display" DataValueField="FileID" OnPreRender="ddl_PreRender" Width="300px"
AutoPostBack="true" onselectedindexchanged="ddlCaseFilesNew_SelectedIndexChanged" />
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlCaseFilesNew" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
要求に応じてPre_render:
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"));
}
}