如何在代码隐藏中访问下拉列表中的选定项目?
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;
}
}
这可能对你有帮助
#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 一个项目:Droplist
和 Droplink
.
下拉列表字段存储用户 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"].值;
我的其中一个模板中有一个下拉列表,其中填充了一些内容项。在代码隐藏中,我想访问下拉列表中的选定项目。我搜索了 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;
}
}
这可能对你有帮助
#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 一个项目:Droplist
和 Droplink
.
下拉列表字段存储用户 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"].值;