8

項目が選択されていない ASP.NET DropDownList が必要です。SelectedIndex を -1 に設定しても、これまでのところ役に立ちません。AJAX で Framework 3.5 を使用しています。つまり、この DropDownList は UpdatePanel 内にあります。これが私がやっていることです:

    protected void Page_Load (object sender, EventArgs e)
    {
        this.myDropDownList.SelectedIndex = -1;
        this.myDropDownList.ClearSelection();

        this.myDropDownList.Items.Add("Item1");
        this.myDropDownList.Items.Add("Item2");
    }

DropDown に要素を追加した瞬間、その SelectedIndex は 0 に変わり、-1 に設定できなくなります (項目を追加した後に SelectedIndex を呼び出してみました)...何が間違っていますか? アリの助けをいただければ幸いです!

4

7 に答える 7

19

DataSource/DataBind 呼び出しを実行した後に呼び出すと、myDropDownList.Items.Add が新しい Listitem 要素を下部に追加するので、代わりに myDropDownList.Items.Insert メソッドを使用することに注意してください。

myDropDownList.DataSource = DataAccess.GetDropDownItems(); // Psuedo Code
myDropDownList.DataTextField = "Value";
myDropDownList.DataValueField = "Id";
myDropDownList.DataBind();

myDropDownList.Items.Insert(0, new ListItem("Please select", ""));

「選択してください」ドロップダウン項目を一番上に追加します。

そして、前述のように、ドロップダウンで選択されたアイテムは常に 1 つだけです (ListBoxes は異なると思います)。明示的に選択されていない場合、これはデフォルトで一番上のアイテムになります。

于 2008-09-17T09:14:24.517 に答える
5

私は以下を読んでいます: http://msdn.microsoft.com/en-us/library/a5kfekd2.aspx

それは言う: 選択した項目のインデックス値を取得するには、SelectedIndex プロパティの値を読み取ります。インデックスはゼロベースです。何も選択されていない場合、プロパティの値は -1 です。

同時に、 http: //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.selectedindex (VS.80).aspx に次のように表示されます。

SelectedIndex プロパティを使用して、DropDownList コントロールから選択された項目のインデックスをプログラムで指定または決定します。DropDownList コントロールでは、項目が常に選択されています。リスト内のすべての項目から同時に選択を解除することはできません。

おそらく -1 は、インデックスの設定ではなく、取得のためだけに有効ですか? もしそうなら、私はあなたの「パッチ」を使います。

于 2008-09-17T09:10:59.050 に答える
5

クライアント側のスクリプトを使用して、 DropDownListのselectedIndexプロパティを -1に設定する (つまり、選択をクリアする) ことができます。

<form id="form1" runat="server">
    <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem Value="A"></asp:ListItem>
        <asp:ListItem Value="B"></asp:ListItem>
        <asp:ListItem Value="C"></asp:ListItem>
    </asp:DropDownList>
    <button id="СlearButton">Clear</button>
</form>

<script src="jquery-1.2.6.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function()
    {
        $("#СlearButton").click(function()
        {
            $("#DropDownList1").attr("selectedIndex", -1); // pay attention to property casing
        })

        $("#ClearButton").click();
    })
</script>
于 2008-10-14T12:49:21.347 に答える
2

selectedIndexは、コントロールが最初に初期化され、コレクション内にアイテムがない場合にのみ-1になります。

WinFormの場合のように、Webドロップダウンリストでアイテムを選択しないようにすることはできません。

this.myDropDownList.Items.Add(new ListItem( "Please select ..."、 ""));が最適だと思います。

このようにして、アイテムを選択する必要があることをユーザーに伝えます。SelectedIndex==0をチェックして検証できます。

于 2008-09-17T09:01:06.513 に答える
2

ドロップダウンでいくつかの項目を選択する必要があると確信しています。私は通常、空のリストアイテムを追加します

this.myDropDownList.Items.Add( "");

私の最初のリスト項目として、それに応じて進みます。

于 2008-09-17T08:52:32.417 に答える
2
  1. ドロップダウン リストを作成し、最初の ListItem を指定します
  2. 新しいアイテムが追加されるように設定AppendDataBoundItemsします。true
<asp:DropDownList ID="YourID" DataSourceID="DSID" AppendDataBoundItems="true"> 
<asp:ListItem Text="All" Value="%"></asp:ListItem> 
</asp:DropDownList>
于 2012-11-04T18:46:45.013 に答える
0

以下の構文を試してください:

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("Select"))

また

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("SelectText"))

また

DropDownList1.Items.FindByText("Select").selected =true

詳細情報: http://vimalpatelsai.blogspot.in/2012/07/dropdownlistselectedindex-1-problem.html

于 2012-07-26T09:17:10.493 に答える