0

ユーザーが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"));
    }

}
4

1 に答える 1

2
if you wanna have it in the update panel 

you should add the  the hidNewCaseFile control inside ContentTemplate  tags

Example : 


 in the header 

  <script runat="server">
        protected void   DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            hidNewCaseFile.Text = ddlCaseFilesNew.SelectedItem.Value;
        }



    </script>

in the body 




    <asp:UpdatePanel ID="UpdatePanel1" runat="server">

        <ContentTemplate>

            <asp:Label runat="server" ID="hidNewCaseFile" Text="Label"></asp:Label>
            <asp:DropDownList ID="ddlCaseFilesNew" AutoPostBack="true" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
        <asp:ListItem>Uae</asp:ListItem>
        <asp:ListItem>KSA</asp:ListItem>
        <asp:ListItem>Lebanon </asp:ListItem>


    </asp:DropDownList>



        </ContentTemplate>


    </asp:UpdatePanel>

また、あなたが持っていることを確認してください <asp:ScriptManager runat="server"> </asp:ScriptManager >

更新パネルを使用する前に

于 2012-10-01T16:45:41.767 に答える