Как добавить всплывающую подсказку для Checkboxlist для каждого элемента в asp.net - PullRequest
8 голосов
/ 14 ноября 2011
<asp:CheckBoxList ID="ckl_EditRole" DataValueField="RoleName" runat="server">
                                    </asp:CheckBoxList>
public void BindListBoxPermission(int field)
    {
        MySqlCommand command = new MySqlCommand();
        DataSet ds = new DataSet();
        int newOrgID = field;
        string MysqlStatement = "SELECT RoleName from tbl_Role Where RoleID >1 order by RoleID desc";
        MySqlParameter[] param = new MySqlParameter[0];
        ds = server.ExecuteQuery(CommandType.Text, MysqlStatement, param);
        ckl_EditRole.DataSource = ds;
        ckl_EditRole.DataBind();
    }

Для каждого элемента всплывающая подсказка различна, для администратора подсказка создает пользователя, а для пользователя подсказка создает сообщение. Как я могу добавить всплывающую подсказку для каждого элемента внутри флажка

Ответы [ 5 ]

15 голосов
/ 14 ноября 2011
protected void Page_PreRender(object sender, EventArgs e)
{
    foreach (ListItem item in ckl_EditRole.Items)
    {
        item.Attributes["title"] = GetRoleTooltip(item.Value);
    }
}

private static string GetRoleTooltip(string p)
{
    // here is your code to get appropriate tooltip message depending on role
}
0 голосов
/ 15 июня 2016

Это то, что я использую, с большим количеством функций, например, чтобы ListItem выглядел как кнопка ссылки.

    protected void FormatPaskWeeksPerStudentRow(GridViewRow gvRow)
    {
            SqlDataSource sdsTETpastWeeks = (SqlDataSource)gvRow.FindControl("sdsTETpastWeeks");
            sdsTETpastWeeks.SelectParameters["StudentID"].DefaultValue = hfStudentID.Value.ToString();
            if (sdsTETpastWeeks != null)
            {
                CheckBoxList cbl1 = (CheckBoxList)gvRow.FindControl("listWeeksTracking");
                if (cbl1 != null)
                {
                    cbl1.DataBind();

                    foreach (ListItem litem in cbl1.Items)
                    {
                        //disable the checkbox for now
                        litem.Enabled = false;

                        //see if any of the past weeks (excluding this week) needs to be highlighted as a hyperlink to show past comments
                        //get the Tracking value. If set, then mark the checkbox as Selected or Checked
                        DataSourceSelectArguments dss = new DataSourceSelectArguments();
                        DataView dv = sdsTETpastWeeks.Select(dss) as DataView;
                        DataTable dt = dv.ToTable() as DataTable;
                        if (dt != null)
                        {
                            //this loops through ALL the weeks available to the student, for this block
                            //it tries to match it against the current ListItem for the week it's loading and determines if they match
                            //if so then mark the item selected (checked=true) if the value in the sub query says it's true
                            foreach (DataRow dr in dt.Rows)
                            {
                                if (litem.Text == dr.ItemArray[0].ToString() && litem.Text != ddlWeekNo.SelectedItem.Text)
                                {
                                    if ((bool)dr.ItemArray[1])
                                        litem.Selected = true;

                                    //for those that were not ticked in prior weeks, make a ToolTip with the text/comment made in that week and underscore the week number
                                    else
                                    {
                                        litem.Attributes["title"] = dr.ItemArray[2].ToString();
                                        litem.Attributes.Add("style", "color:Blue;font-style:italic;text-decoration:underline;");
                                    }
                                }
                            }
                        }
                    }
                }
            }
}

Таким образом, по сути, я помещаю всплывающую подсказку, которая уникальна на основе данных из источника данных, и я изменяю внешний вид ListItem на синее подчеркивание.

0 голосов
/ 14 ноября 2011

Вы можете написать следующий фрагмент кода для метода загрузки страницы: chkbox.Items [0] .Attributes.Add ("Title", "Admin");chkbox.ToolTip = "Admin";

chkbox.Items [1] .Attributes.Add ("Заголовок", "Пользователь");chkbox.ToolTip = "Пользователь";

0 голосов
/ 14 ноября 2011

Вы можете использовать событие PreRender - зацикливание на элементах (должно быть ListItems), и вы можете установить атрибут html для заголовка на основе значений флажка.

В тех случаях, когда я хочу иметь много контроля над флажками, я мог бы предпочесть поместить флажок в повторитель - но это может быть не нужно здесь.

0 голосов
/ 14 ноября 2011

Используйте свойство ToolTip:

<asp:CheckBoxList ID="ckl_EditRole" DataValueField="RoleName" runat="server" ToolTip="Roles">
</asp:CheckBoxList>

Это то, что вы спрашиваете?

Если вы хотите обновить всплывающую подсказку для каждого элемента, вам нужно обрабатывать их отдельно:

for (int i = 0; i < ckl_EditRole.Items.Count; i++)
   ckl_EditRole.Items[i].Attributes["title"] = "custom Tooltip";
...