如何在代码隐藏中访问下拉列表中的选定项目?

How to access the selected item in a Droplist in Code Behind?

我的其中一个模板中有一个下拉列表,其中填充了一些内容项。在代码隐藏中,我想访问下拉列表中的选定项目。我搜索了 Google,但没有找到任何东西。

谁能告诉我如何在 C# 中访问下拉列表并获取其选定的项目?

您可以 select 按下拉 ID

dropdownID.SelectedValue.ToString()

page.aspx:

<asp:DropDownList ID="ddlTipoDocumento" runat="server">
  <asp:ListItem Selected="True" Value="0">Select</asp:ListItem>
  <asp:ListItem Value="1">Element 1</asp:ListItem>
  <asp:ListItem Value="1">Element 2</asp:ListItem>
</asp:DropDownList>

page.aspx.cs(代码隐藏):

ddlTipoDocumento.SelectedItem.Value;

你可以测试

var selectedOption = select1.SelectedValue;

访问Getting HTML drop down list value from code behind

您可以使用 属性 SelectedValue 访问该值。 例如:var Value = DropDownList1.SelectedValue 但您需要像这样在控件上启用自动回传

<asp:DropDownList ID="DropDownList1" runat="server" autopostback="true">

加价

<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="ddListTest" runat="server">
            <asp:ListItem Value="item1" Selected="True">Item 1</asp:ListItem>
            <asp:ListItem Value="item2">Item 2</asp:ListItem>
            <asp:ListItem Value="item3">Item 3</asp:ListItem>
        </asp:DropDownList>
    </div>
    </form>
</body>

C#代码

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ddListTest.ClearSelection();
        ddListTest.Items.FindByValue("item2").Selected = true;
    }
}

这可能对你有帮助

for more info

#Sitecore Droplist 字段类型的值为字符串,它是所选项目的名称。

要得到值,你可以简单地做 item["MyField"]

这可能是一个重复的问题 -

类似于:

myDropDownList.SelectedIndex = 1;

或者如果你想读取值:

myDropDownList.Text == "test"

ASP:

                   <asp:DropDownList ID="myDropDownList" runat="server" ViewStateMode="Enabled" class="sys_small">
                            <asp:ListItem Value="test1" Text="test1"></asp:ListItem>
                            <asp:ListItem Value="test2" Text="test2"></asp:ListItem>
                            <asp:ListItem Value="test3" Text="test3"></asp:ListItem>
                            <asp:ListItem Value="test4" Text="test4"></asp:ListItem>
                        </asp:DropDownList>

答案并不像您想的那么简单。 Sitecore 有两种字段类型,允许用户从项目列表中 select 一个项目:DroplistDroplink.

下拉列表字段存储用户 select 项目的 名称,但不是对项目本身的引用。这仅在您拥有非常基础的 selection 并且知道您永远不需要提供更多信息时才有用。

Droplink 字段存储用户 select 编辑的项目的 ID,可以通过以下方式访问:

public Item GetSelectedItemFromDroplinkField(Item item, string fieldName)
{
    ReferenceField field = item.Fields[fieldName];
    if (field == null || field.TargetItem == null)
    {
        return null;
    }

    return field.TargetItem;
}

我的建议是将字段类型更改为 Droplink,如果这对您来说是一个简单的更改,并且不会影响现有内容。如果您不能这样做,那么以下代码可能会帮助您:

public Item GetSelectedItemFromDroplistField(Item item, string fieldName)
{
    Field field = item.Fields[fieldName];
    if (field == null || string.IsNullOrEmpty(field.Value))
    {
        return null;
    }

    var fieldSource = field.Source ?? string.Empty;
    var selectedItemPath = fieldSource.TrimEnd('/') + "/" + field.Value;
    return item.Database.GetItem(selectedItemPath);
}

它的工作原理是采用 selected 项目的名称,并将其附加到 source 属性(您在模板中设置)。它远非完美,但它是沿着正确的路线前进的,应该会让您走上正确的轨道。

您可以访问 sitecore 字段:
项目项目 = Sitecore.Context.Item;
item.Fields["Droplink"].值;