我有一个带DropDownList的转发器。我在itembound事件中设置了这个列表的数据源,并设置了selectedindex。当我调试selectedindex被设置,但是当页面完成加载所有项目时,选择默认项目。
这是我的代码:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
var ddl = (DropDownList)e.Item.FindControl("DataFeedItems");
ddl.DataSource = FilterDropDownData();
ddl.DataTextField = "ColumnName";
ddl.DataValueField = "ColumnName";
ddl.DataBind();
ddl.SelectedValue = "Select";
ddl.SelectedIndex = 28;
}
protected DataTable FilterDropDownData() { var importedFeedColums = I make the table here; DataRow newRow = importedFeedColums.NewRow(); newRow[0] = "Selecteren"; importedFeedColums.Rows.Add(newRow); return importedFeedColums; }
我Als尝试使用Databound甚至下拉列表,但这也没有用:
protected void DataFeedItems_DataBound(object sender, System.EventArgs e)
{
var ddl = (DropDownList) (sender);
ddl.SelectedValue = "Selecteren";
ddl.Items[28].Selected = true;
}
<asp:Repeater ID="Repeater1" runat="server"
onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<li>
<label><%# DataBinder.Eval(Container.DataItem, "ColumnName") %></label>
<asp:DropDownList ID="DataFeedItems" ClientIDMode="Static" runat="server" DataSource='<%# FilterDropDownData() %>'
DataTextField="ColumnName" DataValueField="ColumnName" OnDataBound="DataFeedItems_DataBound" >
</asp:DropDownList>
<input id="Hidden1" runat="server" clientidmode="Static" type="hidden" value='<%# DataBinder.Eval(Container.DataItem, "ColumnName") %>' />
</li>
</ItemTemplate>
</asp:Repeater>
当我发布表单时,我可以获得每个DropDownList的selectedvalue和text。我做错了什么
答案 0 :(得分:1)
FilterDropDownData()返回什么?
你试过这个吗?
ddl.Items.FindByValue("Selecteren").Selected = true;
或
ddl.Items.FindByText("Selecteren").Selected = true;
答案 1 :(得分:1)
此方法将失败,因为下拉列表不能选择多个项目。设置“Selected = true”将完全相同。
只有使用DropDownList的SelectedIndex属性才能将项目设置为选中。
例:ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue("Selecteren"));