Ste*_*ven 1 .net c# asp.net data-binding drop-down-menu
这是来自Repeater中的Populating DropDownList的后续工作.
我在转发器中添加了一个下拉列表.现在我需要设置所选的值,但说起来容易做起来难...
这是我的代码:
protected void criteriaScore_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// This event is raised for the header, the footer, separators, and items.
// Execute the following logic for Items and Alternating Items.
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DropDownList ddl = (DropDownList)e.Item.FindControl("ddlRating");
DataRowView drw = (DataRowView)e.Item.DataItem;
for (int i = 1; i < 6; i++)
{
ddl.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
ddl.DataBind(); // <- Not sure if this is needed here.
ddl.SelectedValue = drw.Row["lvl"].ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
drw.Row ["lvl"].ToString()是一个1-5的值.
我尝试过设置SelectedValue和SelectedIndex.
我也试过了
ddl.SelectedValue = Convert.ToString(ddl.Items.FindByText(drw.Row["lvl"].ToString()).Value) ;
Run Code Online (Sandbox Code Playgroud)
我的想法已经不多了.
哇,你这样做的方式比它需要的更复杂.不要在ItemDataBound上执行此操作,在控件DataBinding属性上执行此操作.
在您的下拉列表中定义数据绑定事件:
<asp:DropDownList runat="server" ID="ddlYourDDL" OnDataBinding="ddlYourDDL_DataBinding">
Run Code Online (Sandbox Code Playgroud)
然后实现OnDataBinding事件:
protected void ddlYourDDL_DataBinding(object sender, System.EventArgs e)
{
DropDownList ddl = (DropDownList)(sender);
for (int i = 1; i < 6; i++)
{
ddl.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
// Now that the items are all there, set the selected property
ddl.SelectedValue = Eval("lvl").ToString();
}
Run Code Online (Sandbox Code Playgroud)
您应该尝试在控件级别进行数据绑定,而不是搜索事物并让您的网格必须知道它包含的内容.每个控件都可以自己处理;)
我不同意您在之前的链接问题中给出的答案,以使用ItemBound事件.当某些事物需要影响多个控件时,应在"项目"级别使用此事件.
编辑: 我还将此信息添加到您的其他问题中,因此如果将来发现,其他人不会将ItemBound事件用于此目的.
| 归档时间: |
|
| 查看次数: |
9622 次 |
| 最近记录: |