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"] + " - ");
     }

我已经得到了 0 索引,请问我该怎么办?

4

2 回答 2

1

ASP.NET 不够“智能”,无法传递提交下拉列表的实际选定索引。相反,它取决于浏览器发送选定的,然后取决于具有不同值的项目。

如果存在具有相同值的项目并且其中一个被选中,则服务器端 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 回答