1

私はこれが非常に単純だと確信しています (歯が生える娘と一晩中起きていました!) 私のドロップダウンリストは常に 0 を返します:

<p>
    <asp:DropDownList ID="ddlSelectVenue" AppendDataBoundItems="true" CssClass="small-dropdownlist" DataTextField="SiteName" DataValueField="SiteName" runat="server">
        <asp:ListItem Text="-- select --" Value="0"></asp:ListItem>
    </asp:DropDownList>
</p>

これを設定するコードは次のとおりです。

for (int i = 0; i < dArray.Length; i++)
{
    ddlSelectVenue.Items.Add(new ListItem(dArray[i]["SiteName"].ToString(),dArray[i]["SiteName"].ToString()));
}

値が含まれています。ページ ソースのスニペットを次に示します。

<select name="ctl00$ddlSelectVenue" id="ctl00_ddlSelectVenue" class="small-dropdownlist">
<option value="0">-- select --</option>
<option value="Admiral Duncan - London">Admiral Duncan - London</option>
<option value="Anchor - Bristol">Anchor - Bristol</option>
<option value="Assembly - Preston">Assembly - Preston</option>
</select>

Go ボタンの HTML は次のとおりです。

<asp:ImageButton ID="imbGo" ImageUrl="~/img/GoButton.png" OnClick="imbGo_Click" runat="server" />

そして、ここに imbGo_Click があります (その一部です):

protected void imbGo_Click(object sender, EventArgs e)
{
    switch(ddlSelectVenue.SelectedValue)
    {
        case "Admiral Duncan - London":
            Response.Redirect("http://www.welovetolisten.co.uk?unitcode=5004&FROMWEBSITE=1");
            break;
        case "Anchor - Bristol":
            Response.Redirect("http://www.welovetolisten.co.uk?unitcode=3010&FROMWEBSITE=1");
            break;
        // ...
    }
}

それは常にデフォルトに爆撃しています: 私が言ったように、おそらく理由は明らかですが、私はそれを見ていません!

編集

私はこれを使用して解決しましたが、それが問題だったので投稿することについて最初に言った人を受け入れます.一種の問題。

とにかく、代わりにjQueryを使用して変更するドロップダウンリストにCookieを設定しました:

$('.small-dropdownlist').change(function () {
            var info = $('.small-dropdownlist option:selected').text();
            $.cookie("FeedbackVenue", info);
        });

次に、[Go] ボタンで Cookie を読み取ります。

if(Request.Cookies["FeedbackVenue"] != null)
        {
            venue = Request.Cookies["FeedbackVenue"].Value;
        }

        switch(venue.Replace("%20"," "))

今では動作します。

みんな、ありがとう。

4

4 に答える 4

0

DropDownListで再バインドしないかどうかを確認しますPostBack

于 2013-05-24T11:32:34.843 に答える
0

PostBack で DropDownList を再バインドしないかどうかを確認し、この記事を参照してくださいhttp://evonet.com.au/dropdownlist1-has-a-selectedvalue-which-is-invalid-because-it-does-not-exist-in-アイテム一覧/

于 2013-05-24T11:33:59.433 に答える
0

プログラムでアイテムを追加する代わりに、ドロップダウンリストをデータバインドすると機能しますか?

ddlSelectVenue.DataSource = dArray; 

DataTextFieldとはすでに設定されていDataValueFieldます。ただし、誰かが見逃した場合は追加します。

ddlSelectVenue.DataTextField="SiteName";
ddlSelectVenue.DataValueField="SiteName";

ddlSelectVenue.DataBind();

また、イベントが妨げられ、すべての変更/選択が取り消されるため、ポストバックごとにドロップダウンリストが再入力されないようにする必要があります。

だから(例えばPage_Load):

if(!IsPostBack)
{
    // DataBindDropDown();
}
于 2013-05-24T11:36:03.857 に答える