selectedindex不起作用

selectedindex不起作用

我有以下代码:

DataRow CreateRow(DataTable dt, string name, string country)
    {
        DataRow dr = dt.NewRow();
        dr["Name"] = name;
        dr["Country"] = country;
        return dr;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        // creating the data table
        DataTable dt = new DataTable("Student Details");

        // adding two columns Name and Country
        dt.Columns.Add("Name", typeof(String));
        dt.Columns.Add("Country", typeof(String));

        // create 3 rows
        dt.Rows.Add(CreateRow(dt, "Varun", "India"));
        dt.Rows.Add(CreateRow(dt, "Li", "China"));
        dt.Rows.Add(CreateRow(dt, "Yishan", "China"));

        // create a data view
        DataView dv = new DataView(dt);

        DropDownList1.DataSource = dv;
        DropDownList1.DataTextField = "Name";
        DropDownList1.DataValueField = "Country";
        DropDownList1.DataBind();
    }
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        int x = DropDownList1.SelectedIndex;
        int temp = 0;
        temp++;
    }


标记看起来像这样:

<body>
    <form id="form1" runat="server">
    <div>

        <asp:Label ID="Label1" runat="server"></asp:Label>
        <br />
        <br />
        <asp:DropDownList ID="DropDownList1" runat="server"
            onselectedindexchanged="DropDownList1_SelectedIndexChanged"
            AutoPostBack="true">
        </asp:DropDownList>

    </div>
    </form>
</body>


问题是无论我选择什么,标签始终显示Varun。我调试了代码,发现由于某些原因“ DropDownList1.SelectedIndex”始终返回0。

我不确定为什么会这样。每次我从下拉列表中选择内容时,都会调用函数“ DropDownList1_SelectedIndexChanged”。

谢谢

最佳答案

看起来您正在绑定下拉列表中的Page_Load ...

请记住,当下拉列表更改时,它会回发(AutoPostBack ='True'),并且由于您绑定在Page_Load上,因此只要更改索引,它就会重新绑定,而不是您想要的!

您应该执行以下操作:

if (!IsPostBack)
{
    BindDropDownList1();
}

关于asp.net - asp .net dropdownlist selectedindex不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7236591/

10-11 23:00