在转换表asp.net中的转发器内的下拉菜单

时间:2014-02-24 19:28:16

标签: asp.net drop-down-menu

我正在尝试在asp.net中构建一个移位表

我使用了一个mainrepeater用于班次,而一个转发器用于轮班人员

<repeater .... shift 1 - 2 - 3 .... >
   <repeater .... person 1 - 2 - 3 inside each shift >
      <dropdown .... to select the person name >

转移1

repeater_dropdown1 repeater_dropdown2 。

班次2

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有助于修复此代码或找到其他解决方案吗?

1 个答案:

答案 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") %>' />

它有效