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

时间:2015-04-09 14:50:16

标签: c# sitecore

我的一个模板中有一个Droplist,其中填充了一些内容项。在Code Behind中,我想访问Droplist中的所选项目。我搜索了谷歌,但没有找到任何东西。

任何人都可以告诉我如何访问Droplist并在C#中获取其选定的项目?

9 个答案:

答案 0 :(得分:7)

答案并不像你想象的那样直截了当。 Sitecore有两种字段类型,允许用户从项目列表中选择项目:DroplistDroplink

Droplist字段存储用户选择的项目的名称,但不存储对项目本身的引用。这仅适用于具有令人难以置信的基本选择并且知道您永远不需要提供更多信息的情况。

Droplink字段存储用户选择的项目的 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);
}

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

答案 1 :(得分:0)

您可以选择下拉ID

dropdownID.SelectedValue.ToString()

答案 2 :(得分:0)

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;

答案 3 :(得分:0)

你可以测试

  

var selectedOption = select1.SelectedValue;

访问Getting HTML drop down list value from code behind

答案 4 :(得分:0)

您可以使用属性SelectedValue访问该值。 例如:var Value = DropDownList1.SelectedValue但你已经开始在控件上启用自动回复,就像这样

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

答案 5 :(得分:0)

标记

<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

答案 6 :(得分:0)

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

要获得该值,您只需执行项目[“MyField”]

即可

这可能是一个重复的问题 - How to use Droplist types in Sitecore template fields

答案 7 :(得分:0)

类似的东西:

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>

答案 8 :(得分:0)

您可以访问sitecore字段:
Item item = Sitecore.Context.Item;
。item.Fields [ “Droplink”]值;