选择的DropdownList值始终返回第一个值

时间:2016-06-21 12:43:14

标签: c# asp.net arraylist

目前我有一个方法可以从我的数据库中检索名称列表并作为arraylist返回。

public static ArrayList GenerateFolderLocation(String username)
    {
        // Get User ID
        SqlDataReader sqlUserID = GetUserInformation(username);
        sqlUserID.Read();
        int userid = int.Parse(sqlUserID["userid"].ToString());

        SqlCommand cmd = new SqlCommand("SELECT distinct foldername FROM mb_folder WHERE userid=@userid", SQLGetMBoxConnection());
        cmd.Parameters.AddWithValue("@userid", userid);
        SqlDataReader sqldr = cmd.ExecuteReader();
        ArrayList locationList = new ArrayList();

        while (sqldr.Read())
        {
            locationList.Add(sqldr["foldername"].ToString());
        }
        locationList.Sort();
        return locationList;
    }

在我的页面加载方法中,我使用DataSourceDataBind来填充我在主页上的下拉列表。注意UploadLocation是我的下拉列表的ID

UploadLocation.DataSource= MBFolder.GenerateFolderLocation(Context.User.Identity.Name);
UploadLocation.DataBind();

在我的主页面中,我有这个下拉列表,我还有一个提交按钮

 <asp:DropDownList ID="UploadLocation" runat="server" 
         AutoEventWireup="true" EnableViewState="true">
 </asp:DropDownList>
<asp:Button ID="NewUploadFile" runat="server" Text="Upload" OnClick="NewUploadFile_Click" ValidationGroup="UploadFileValidation"  AutoPostBack="true"/>

我的问题是,当我点击我的提交按钮时,它会触发“NewUploadFile_Click”,在该方法中,我想要检索我的下拉列表的选定值。但是现在我能够检索值,但它是我的下拉列表中的第一个值。因此,例如,在我的arraylist中会有(test1,test2,test3),如果我选择“test2”,我的方法将检索“test1”。 在“NewUploadFile_click”中,我使用UploadLocation.SelectedItem.Text;来获取所选值。我究竟做错了什么?如何检索所选数据。 THX

4 个答案:

答案 0 :(得分:1)

尝试将列表初始化代码包装在PageLoad事件的!IsPostBack {}部分中。

即在Page_Load

if (!IsPostback)
{
 ... Initialise List here
}

看起来你可能在获得所需数据之前重新绑定列表。

答案 1 :(得分:0)

当您调用绑定下拉列表的方法时,请尝试将其添加到内部 在PageLoad事件中:

if(!IsPostBack)
{ 
    fillvalues();
}

因此,每次更改选择时都不会触发

答案 2 :(得分:0)

尝试将AutoPostBack="true";设置为DropDownList

<asp:DropDownList ID="UploadLocation" runat="server" 
         AutoEventWireup="true" EnableViewState="true" AutoPostBack="true";>
 </asp:DropDownList>

答案 3 :(得分:0)

确认您的网页级ViewState已启用
并确认您的数据绑定代码在!IsPostback条件

if (!IsPostback)
{
.... databinding code..
}