1

の選択したアイテムを取得しようとすると、aspxファイルとaspx.csファイルがあります

DropDownList

常に0インデックスのアイテムを取得します

<div style="text-align:center">
             <b>Scegliere il nome del report *  </b>  &nbsp;
             <asp:DropDownList id="dropdownlist1" style="width:250px;" runat="server"></asp:DropDownList>
            <br />
            <br /> 

            <br /> 
            <b>Scegliere la data del report </b>  &nbsp; 
            <asp:TextBox runat="server" ID="txtSchedDate" name="txtSchedDate" type="text" cssclass="datebox" style="height:20px;" ReadOnly="true"/>
            <br />
            <br />
            <br />
            <asp:Button ID="Button1" runat="server" Text="Pubblica" OnClientClick="" OnClick="Button1_Click" />
            <br />
            <br />
            <br />
            <br />
            <asp:Label ID="Label1" Font-Names="Arial" Font-Size="15px" runat="server" ForeColor="Red" Font-Bold="True" Text=""></asp:Label>
            <div id="divUpload" style="display:none">
            <div  style="width:200pt;;text-align:center;">Pubblicando...</div>
            </div>
        </div>

C#コード

  protected double size = 1;
  private string connectionString;
  private OracleConnection connection;
  private OracleCommand processNumQuery;
  private int indexdropitem;

  protected void Page_Load(object sender, EventArgs e)
  {


    if (Request["CONNECTSTRING"] == null && Session["CONNECTSTRING"] == null)
    {
        Response.Redirect("sessionup.asp?type=Pubreport");
    }
    else
    {
        if (Request["CONNECTSTRING"] != null)
        {
            connectionString = Request["CONNECTSTRING"].ToString();
        }
        else
        {
            connectionString = Session["CONNECTSTRING"].ToString();
        }


        if (connectionString.IndexOf("DSN=") >= 0)
        {
            Utility util = new Utility();
            connectionString = util.ConnStr(connectionString);
        }
        Session["CONNECTSTRING"] = connectionString;
        connection = new OracleConnection(connectionString);
        connection.Open();

    }
    if (!IsPostBack)
    {
            processNumQuery = new OracleCommand("select distinct nome_report from rpg_notification",connection);
            OracleDataReader reader = processNumQuery.ExecuteReader();

            while (reader.Read())
            {
                dropdownlist1.Items.Insert(0, new ListItem(reader.GetString(0), ""));
            }
            reader.Close();
    }
    }


     protected void Button1_Click(object sender, EventArgs e)
     {

    Response.Write("try :" + dropdownlist1.SelectedIndex + " - " + txtSchedDate.Text + " - " + dropdownlist1.Items[dropdownlist1.SelectedIndex].Text + " - " + Request["txtSchedDate"] + " - ");
     }

私はawallysが0インデックスを取得します私がしなければならないことをお願いします??

4

2 に答える 2

1

ASP.NET は、送信されたドロップダウン リストの実際に選択されたインデックスを渡すほど「スマート」ではありません。代わりに、選択したを送信するブラウザに依存し、次に異なる値を持つアイテムに依存します。

同じ値を持つ項目があり、そのうちの 1 つが選択されている場合、サーバー側の SelectedIndex はその値を持つ最初の項目のインデックスを返します。簡単なテストを作成したところ、正しいことが証明されました。(.NET フィドルに精通していません。申し訳ありません)

あなたの特定のケースでは、その行のためにすべてのアイテムに空の値がありました:

dropdownlist1.Items.Insert(0, new ListItem(reader.GetString(0), ""));

問題を「修正」するには、値を追加するだけです。

string myValue = reader.GetString(0);
dropdownlist1.Items.Insert(0, new ListItem(myValue, myValue));
于 2013-02-04T15:31:30.580 に答える
0

それはうまくいくはずです...デバッグが提案するためだけに、dropdownlist1.SelectedItem.Text代わりに呼び出してdropdownlist1.Items[dropdownlist1.SelectedIndex].Text、何が得られるかを確認してください

于 2013-02-04T14:52:27.640 に答える