Отключить кнопки ссылок, когда поле таблицы = x?

#c# #asp.net #sql-server #visual-studio

#c# #asp.net #sql-сервер #visual-studio

Вопрос:

У меня есть панели продуктов на странице просмотра корзины, где пользователь может нажать кнопку редактирования ссылки на каждом продукте, чтобы отредактировать сведения о продукте, но бизнес-правила требуют, чтобы после привязки корзины, что означает, что поле статуса таблицы отправки для этой отправки обновляется с «нового» на «связанный», пользователь больше не может редактировать свои продукты. Я пробовал несколько разных методов отключить кнопки ссылок (switchcase, if then и т.д.), Но безрезультатно. Есть ли простой способ, которым я могу передать условие в код linkbutton, которое делает их видимость / атрибуты включения обусловленными для этого поля таблицы? Код ниже:

Когда я запускаю этот блок, кнопки ссылок все еще видны (если я установил для него значение .visible = false) и / или включены. ??

 string product = "SELECT ProductId FROM SubmissionProducts WHERE SubmissionId ="   x;
    using (SqlConnection editConn = new SqlConnection(connectionString))
    {
        editConn.Open();
        using (SqlCommand comntCmd = new SqlCommand(comnt, editConn))
        {
            SqlDataReader dr = comntCmd.ExecuteReader();
            dr.Read();
            var c = dr.GetInt32(0);
            if (c > 0)
            {
                PanelQuote.Visible = false;
                using (SqlCommand prodcmd = new SqlCommand(product, editConn))
                {
                    SqlDataReader drpan = prodcmd.ExecuteReader();
                    while (dr.Read())
                        switch (drpan.GetInt32(0))
                        {
                            case 1:
                                LnbEpl.Enabled = false;
                                break;
                            case 2:
                                LnbFid.Enabled = false;
                                break;
                            case 3:
                                LnbCrim.Enabled = false;
                                break;
                            case 4:
                                LnbPub.Enabled = false;
                                break;
                            case 5:
                                LnbPriv.Enabled = false;
                                break;
                            case 6:
                                LnbNot.Enabled = false;
                                break;
                            case 7:
                                LnbEo.Enabled = false;
                                break;
                            default:
                                break;
                        }
                }

            }
            else
                PanelComment.Visible = false;
        }
  

Ответ №1:

Это работает, я изменил пару вещей, удалите whiles и создайте новое соединение, потому что приведенный вами код вызовет это исключение "There is already an open DataReader associated with this Command which must be closed first."

 SqlConnection editConn1 = new SqlConnection(connectionString);
SqlConnection editConn2 = new SqlConnection(connectionString);
editConn1.Open();
editConn2.Open();

SqlCommand comntCmd = new SqlCommand(comnt, editConn1);
SqlDataReader dr = comntCmd.ExecuteReader();
dr.Read();
var c = dr.GetInt32(0);
if (c > 0)
{
    PanelQuote.Visible = false;
    SqlCommand prodcmd = new SqlCommand(product, editConn2);
    SqlDataReader drpan = prodcmd.ExecuteReader();
    drpan.Read();
    var d = drpan.GetInt32(0);
    switch (d)
    {
        case 1:
            LnbEpl.Enabled = false;
            break;
        case 2:
            LnbFid.Enabled = false;
            break;
        case 3:
            LnbCrim.Enabled = false;
            break;
        case 4:
            LnbPub.Enabled = false;
            break;
        case 5:
            LnbPriv.Enabled = false;
            break;
        case 6:
            LnbNot.Enabled = false;
            break;
        case 7:
            LnbEo.Enabled = false;
            break;
        default:
            break;
    }
}
else
{
    PanelComment.Visible = false;
}