#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;
}