получить значения флажков и пометить как отмеченные - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь получить параметры из базы данных в флажок, и если у него одинаковый идентификатор продукта, его необходимо проверить по умолчанию

это код вставки в базу данных

for (int i = 0; i < ddlcaroptions.Items.Count; i++)
{
   if (ddlcaroptions.Items[i].Selected == true)
{
Int64 PCarOptionID = Convert.ToInt64(ddlcaroptions.Items[i].Value);
SqlCommand cmd2 = new SqlCommand("insert into tblCarOptionQuant values('" + PID + "','" + PCarOptionID + "')", con);
cmd2.ExecuteNonQuery();
}
}

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


SqlCommand cmd = new SqlCommand("select * from tblCarOption", con);

                SqlDataAdapter sda = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                sda.Fill(dt);
                if (dt.Rows.Count != 0)
                {
                    ddlcaroptions.DataSource = dt;
                    ddlcaroptions.DataTextField = "CarOptionNameAR";
                    ddlcaroptions.DataValueField = "CarOptionID";
                    ddlcaroptions.DataBind();
                }

теперь у меня есть все параметры, но я хочу, чтобы выбранные значения былите, которые пользователь уже проверял ранее и сохранял в таблице tblCarOptionQuant,

я пытался получить значения с помощью этой команды

using (SqlCommand getselectedop = new SqlCommand("select PCarOptionID from tblCarOptionQuant where PID = " + PID + "", con))

все в порядке, но теперь, что я могу сделать, чтобы установить выбранные значения изэта команда результат! ??

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

проблема в том, что когда вы извлекаете данные и конвертируете в строку, вы получаете только 1-ю строку, поэтому я использовал StringBuilder для построения 1-й строки, в которой все строки находятся в таблице :) !!Внимание !!перед использованием этого кода убедитесь, что вы установили флажок для всех значений, которые пользователь проверил или нет, затем используйте этот код, чтобы получить параметры, выбранные ранее (пользователем)

                using (SqlCommand getselectedop = new SqlCommand("RetrieveCarOptions", con))
            {
                getselectedop.CommandType = CommandType.StoredProcedure;
                getselectedop.Parameters.AddWithValue("@PID", Convert.ToInt64(Request.QueryString["PID"]));
                con.Open();
                using (SqlDataReader reader = getselectedop.ExecuteReader())
                {
                    StringBuilder sb = new StringBuilder();
                    if (reader.HasRows)
                    {
                        if (sb.Length > 0) sb.Append("___");
                        while (reader.Read())
                        {
                            for (int i = 0; i < reader.FieldCount; i++)
                                if (reader.GetValue(i) != DBNull.Value)
                                    sb.AppendFormat("{0}-", Convert.ToString(reader.GetValue(i)));
                            SelectCheckBoxList(reader["PCarOptionID"].ToString(), ddlcaroptions);
                        }
                    }
                }
            }

, теперь разделить ипроверьте, имеет ли оно то же значение, что и отмеченный

        private void SelectCheckBoxList(string valueToSelect, CheckBoxList ddlcaroptions)
    {
        string[] aray = valueToSelect.Split(',');
        foreach (string listItem2 in aray)
        {
            ListItem listItem = ddlcaroptions.Items.FindByValue(valueToSelect);
            listItem.Selected = true;                
        }
    }

Надеюсь, этот ответ ясен и помогите кому-нибудь еще:)

0 голосов
/ 20 июня 2019

вы можете использовать FindByValue, чтобы получить определенный элемент и установить его в выбранный, см. Код ниже

string value = "SomeValue";
               var item = ddlcompany.Items.FindByValue(value);
               if (item != null)
                   item.Selected = true;
...