SelectedIndex不会更改SharePoint asp DropDownList

时间:2019-05-23 12:37:57

标签: c# asp.net sharepoint

我正在编写SharePoint App,并且下拉列表有问题。其SelectedIndex不变。我阅读了许多问题和答案,他们建议对IsPostBack使用EnableViewStatetrue。我都没有成功。

ASP代码:

<div class="value">
    <asp:DropDownList ID="groupingDropDownList" runat="server" EnableViewState="True" OnSelectedIndexChanged="groupingDropDownList_SelectedIndexChanged" AutoPostBack="true" />
</div>

C#代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
            {                
                groupingDropDownList.DataSource = sourceList.Select(x => new { x.Name, Value = x });
                groupingDropDownList.DataTextField = "Name";
                groupingDropDownList.DataValueField = "Value";
                groupingDropDownList.DataBind();
            }
}

事件SelectedIndexChanged未触发,因为索引未更改。我在行if (!Page.IsPostBack)上设置了一个断点,它始终为0。

2 个答案:

答案 0 :(得分:0)

在!Page.IsPostBack块中,您是第一次填充下拉列表。您似乎正在尝试检测正在加载的下拉选择中的更改-这是不可能的。

因此,要对其进行测试,您应该在页面的回发中或在groupingDropDownList_SelectedIndexChanged事件处理程序中进行检查。

if (!Page.IsPostBack)
{                
    groupingDropDownList.DataSource 
        = sourceList.Select(x => new { x.Name, Value = x });
    groupingDropDownList.DataTextField = "Name";
    groupingDropDownList.DataValueField = "Value";
    groupingDropDownList.DataBind();
}
// Actual postback
else
{
    var test = groupingDropDownList.SelectedValue;
}

答案 1 :(得分:0)

我知道我的错是那一行:

groupingDropDownList.DataSource = sourceList.Select(x => new { x.Name, Value = x });

我总是将值设置为与类名相同,并且由于该值没有变化,因此控件没有注意到索引的变化。