除了第一个<option> </option>之外,.NET DropDownList回发选择不会选择任何内容

时间:2010-02-10 05:08:24

标签: .net select drop-down-menu postback

我遇到了.NET DropDownList控件的问题。

问题:每次进行回发时,它都默认为与所选的第一个选项相同的第一个选项标签。我似乎无法得到它,因此它指向实际选定的<option>

基本上,这是正在发生的事情。

1。我在Default.aspx中创建一个DropDownList控件

<asp:DropDownList ID="controlSelector" AutoPostBack="true" 
    OnSelectedIndexChanged="onSelectChange" runat="server" />

2。我从数据库中提取数据

DevHTMLGetter getControls = new DevHTMLGetter();

DataTable queryResult = new DataTable();
queryResult = getControls.getControlNames("getAdminHTML");

// binds the DataTable to the DropDownList
controlSelector.DataTextField = "controlName";
controlSelector.DataValueField = "controlID";
controlSelector.DataSource = queryResult;
controlSelector.DataBind();

数据是:

    ---------------------------
    | CONTROLID | CONTROLNAME |
    ---------------------------
    |    1      | testcontrol |
    ---------------------------
    |    2      | tstcontrol2 |
    ---------------------------

3。我在提交表单时尝试操纵数据:

protected void displayControlsHTML(Object sender, EventArgs
{
    String selectedItem = controlSelector.Attributes["selected2"].ToString();
    String n = controlSelector.Items.FindByText(selectedItem).ToString();

    DevHTMLGetter getControls = new DevHTMLGetter();
    Dictionary<String, String> displayItems = 
        getControls.getControlsForEdit("getSpecificControlItems", selectedItem); 
        // from Web.Config <AppSettings>

    //sets all of the boxes to their appropriate text
    txtControlName.Text = displayItems["controlName"].ToString();
    txtControlClassName.Text = displayItems["className"].ToString();
    txtLiveHTMLEditBox.Text = displayItems["controlHTML"].ToString();
    txtDisplayHTMLEditBox.Text = displayItems["displayHTML"].ToString();
}

我的页面渲染如下:

<select class="myDropDown" id="ctl00_defaultContent_controlSelector" name="ctl00$defaultContent$controlSelector">
    <option value="1" selected="selected">Test Control</option>
    <option value="2">Test Control2</option>
</select>

注意:onSelectChange,DropDownList控件上的事件不会执行任何操作,因为我使用SUMBMIT按钮提交它。

1 个答案:

答案 0 :(得分:4)

听起来你可能正在重新数据化回发下拉列表。

尝试在数据绑定代码周围包装if (!PostBack) { ... }语句:

    if (!IsPostBack)
    {
        controlSelector.DataTextField = "controlName";
        controlSelector.DataValueField = "controlID";
        controlSelector.DataSource = queryResult;
        controlSelector.DataBind();
    }
相关问题