rlgentry Ответов: 2

Выберите флажки в списке флажков на основе datatable


У меня есть formview с checkboxlist в edititemtemplate. Я хочу предварительно выбрать элементы, которые находятся в datatable. Как мне это сделать

Что я уже пробовал:

Я попытался установить элементы checkboxlist в datatable в коде позади, но я не могу найти элемент управления.

2 Ответов

Рейтинг:
2

love goldsmith

Вы можете попробовать событие rowdatabound, чтобы найти элемент управления, как показано ниже:

protected void formview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        Checkboxlist ck= e.Row.FindControl("id_of_checkboxlist") as checkboxlist;
    }
}


Рейтинг:
0

Vincent Maverick Durano

Если в вашей базе данных хранится флаг для определения выбранного CheckBox предметы, то вы могли бы просто сделать что-то вроде:

for (int i = 0; i < CheckBoxList1.Items.Count; i++){
             CheckBoxList1.Items[i].Selected = Convert.ToBoolean(dt.Rows[i]["IsSelected"]);
}


IsSelected как логический флаг из вашей базы данных.

Вот краткий пример:

protected void FormView1_DataBound(object sender, EventArgs e)
{
        //Check for its current mode
        if (FormView1.CurrentMode == FormViewMode.ReadOnly)
        {
            //Check the RowType to where the Control is placed
            if (FormView1.Row.RowType == DataControlRowType.DataRow)
            {
                //Just Changed the index of cells based on your requirement
                CheckBoxList cal = (CheckBoxList)FormView1.Row.Cells[0].FindControl("YourCheckBoxControlIDHere");
                if (cbl= !null)
                {
                    DataTable dt = ???; //Set the datasource

                    //loop thru the items of checkboxlist and then preselect 
                    for (int i = 0; i < cbl.Items.Count; i++){
             cbl.Items[i].Selected = Convert.ToBoolean(dt.Rows[i]["IsSelected"]);
}
                }


            }
        }
}