我正在尝试在asp.net中构建一个移位表
我使用了一个mainrepeater用于班次,而一个转发器用于轮班人员
<repeater .... shift 1 - 2 - 3 .... >
<repeater .... person 1 - 2 - 3 inside each shift >
<dropdown .... to select the person name >
repeater_dropdown1 repeater_dropdown2 。
repeater_dropdown1 repeater_dropdown2 .. 。 。 等
一切正常,保存就可以了
但问题是当我编辑班次表时。 因为我现在可以添加一个3人,在非特定时间之后添加另一个
所以下拉列表应该获取最后一个user_id并选择它的值 我尝试了这个代码onload主转发器
protected void PrepareDropDownList(object sender, EventArgs e)
{
Repeater repeater = (Repeater)sender;
if (repeater.Items.Count > 0)
{
for (int shiftcount = 0; shiftcount < repeater.Items.Count; shiftcount++)
{
Repeater temp = (Repeater)repeater.Items[shiftcount].FindControl("saturdayrepeater");
if (temp.Items.Count > 0)
{
for (int count = 0; count < temp.Items.Count; count++)
{
DropDownList ds = (DropDownList)temp.Items[count].FindControl("userdropdown");
HiddenField hf = (HiddenField)temp.Items[count].FindControl("hiddenid");
SarcShiftUser user = CRUD<SarcShiftUser>.Get(int.Parse(hf.Value)); //a method to select a user with a specific id and add it to object from class sarcshiftuser
//ds.SelectedValue = user.user_id+"";
//ds.DataBind();
//err.Text += ds.SelectedValue + "<br />";
//if (user.id != 0)
//{
// ds.SelectedIndex = ds.Items.IndexOf(ds.Items.FindByValue(user.user_id.ToString()));
//}
}
}
}
}
}
但是它不起作用它需要id正确并且每件事都很好但是dropdownlist没有 显示所选的值...我猜它的错误是因为findcontrol获取了下拉列表的副本而不是确切的... ...
PLZ有助于修复此代码或找到其他解决方案吗?
答案 0 :(得分:0)
我使用了tooltip属性并调用了这个函数:
protected void PrepareDropDownList(object sender, EventArgs e)
{
DropDownList list = (DropDownList)sender;
int i = int.Parse(list.ToolTip);
"select the user_id where id ...." = id
list.SelectedValue = user.user_id + "";
}
<asp:DropDownList ID="userdropdown" CssClass="select" runat="server" OnDataBound="PrepareDropDownList" ToolTip='<%#Eval("repeaterid") %>' />
它有效