Рейтинг:
5
Karthik_Mahalingam
обратитесь к этому примеру
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
<asp:ListItem Text="one" Value="1" />
<asp:ListItem Text="two" Value="2" />
<asp:ListItem Text="three" Value="3" />
<asp:ListItem Text="four" Value="4" />
</asp:RadioButtonList>
Цитата:
Возможно, мне придется отключить один или несколько из этих списков.
string[] itemsToDisable = { "1", "2" };
foreach (string item in itemsToDisable)
{
var listItem = RadioButtonList1.Items.FindByValue(item);
if (listItem != null)
listItem.Enabled = false;
}
Примечание : Форматирование строки sql-запроса выполняется следующим образом
уязвимый к
SQL-инъекция[
^] атаки
всегда использовать
Параметризованные запросы для предотвращения атак SQL-инъекций в SQL Server[
^]
использовать
FindByText[
^] или
FindByValue[
^] в зависимости от того, как вы заполняете элементы списка.
Исправление вашего кодаSqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
string Query = "select slot from appoint where selectdate =@date";
SqlCommand cmd = new SqlCommand(Query, cnn);
cmd.Parameters.Add("@date", txtdate.Text);
DataTable dtAdmin = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dtAdmin);
RadioButtonList1.Enabled = dtAdmin.Rows.Count > 0;
ADI@345
txtdate.Текст = Calendar1.Значения свойства selecteddate.ToString("ДД/ММ/гггг");
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].Параметр connectionString);
SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].Параметр connectionString);
string Query = "select slot from assign where selectdate =@date";
DataTable dtAdmin = новый DataTable();
SqlDataAdapter da;
da = новый SqlDataAdapter(запрос, cnn);
da.Fill(dtAdmin);
если (dtAdmin.Строк.Count > 0)
{
foreach (элемент ListItem в RadioButtonList1.Предметы)
{
если (пункт.Текст == Запрос)
{
пункт.Включено = ложь;
}
еще
{
пункт.Включен = истина;
}
}
}
ADI@345
как я могу отключить radiobuttonlist 2 или 3 listitem в зависимости от состояния базы данных..
Karthik_Mahalingam
Если(пункт.Текст == dtadmin.Строки[o]["слот"].Нанизывать())
{
ADI@345
txtdate.Текст = Calendar1.Значения свойства selecteddate.ToString("ДД/ММ/гггг");
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].Параметр connectionString);
string Query = "select slot from assign where selectdate = @date";
SqlCommand cmd = new SqlCommand(Query, cnn);
cmd.Parameters.Add("@date", txtdate.Текст);
DataTable dtAdmin = новый DataTable();
SqlDataAdapter da;
da = новый SqlDataAdapter(cmd);
da.Fill(dtAdmin);
если (dtAdmin.Строк.Count > 0)
{
foreach (элемент ListItem в RadioButtonList1.Предметы)
{
если(пункт.Текст == dtAdmin.Строки[0]["слот"].Метод toString())
{
RadioButtonList1.Items[0].Enabled = false;
}
еще
{
RadioButtonList1.Items[0].Enabled = true;
}
}
}
я меняю свой код, но в dtAdmin.Rows.Count >0 это не считается , alwys показывает 0,но у меня есть одна запись в моей базе данных
Karthik_Mahalingam
пробовать
da.Fill(dtAdmin);
if (dtAdmin.Rows.Count > 0)
{
DataTable dtAdmin = null;
foreach (ListItem item in RadioButtonList1.Items)
item.Enabled = item.Text == dtAdmin.Rows[0]["slot"].ToString();
}
ADI@345
Моя конструкция :-
<asp:RadioButtonList ID="RadioButtonList1" runat="server" Width="100%">
<asp:ListItem Text="9:00 AM" Value="1">9:00 AM
<asp:ListItem Text="9:15 AM" Value="2">9:15 AM
<asp:ListItem Text="9:30 AM" Value="3">9:30 AM
<asp:ListItem Text="9:45 AM" Value="4">9:45 AM
<asp:ListItem Text="10:00 AM" Value="5">10:00 AM
<asp:ListItem Text="10:15 AM" Value="6">10:15 AM
<asp:ListItem Text="10:30 AM" Value="7">10:30 AM
&ЛТ;АСП:текст элемент listitem="10:45 утра" значение="8">в 10:45 утра
&ЛТ;АСП:текст элемент listitem="11:00 АМ" значение="9">В 11:00 утра
<asp:ListItem Text="11:15 AM" Value="10">11:15 AM
&ЛТ;АСП:текст элемент listitem="11:30 часов" значение="11">В 11:30 утра
<asp:ListItem Text="11:45 AM" Value="12">11:45 AM
&ЛТ;АСП:текст элемент listitem="12:00 Фестиваль" значение="13"&ГТ;12:00 вечера
<asp:ListItem Text="12:15 PM" Value="14">12:15 PM
&ЛТ;АСП:текст элемент listitem="12:30 вечера" значение="15">В 12:30 вечера
<asp:ListItem Text="12:45 PM" Value="16">12:45 PM
&ЛТ;АСП:текст элемент listitem="1:00 вечера" значение="17"&ГТ;1:00 вечера
Код:-
txtdate.Текст = Calendar1.Значения свойства selecteddate.ToString("ДД/ММ/гггг");
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].Параметр connectionString);
string Query = "select slot from assign where selectdate = @date";
SqlCommand cmd = new SqlCommand(Query, cnn);
cmd.параметры.AddWithValue ("@date", txtdate.Текст);
DataTable dtAdmin = новый DataTable();
SqlDataAdapter da = новый SqlDataAdapter(cmd);
da.Fill(dtAdmin);
если (dtAdmin.Строк.Count > 0)
{
foreach (элемент ListItem в RadioButtonList1.Предметы)
{
если(пункт.Текст == dtAdmin.Строки[0]["слот"].Метод toString())
{
пункт.Включено = элемент.Текст == dtAdmin.Строки[0]["слот"].Метод toString();
}
}
}
я не знаю, в чем моя ошибка.. когда я отлаживаю его, он не считает ни одной строки из базы данных, поэтому он не перемещается внутрь if(dtAdmin.Rows.Граф >0)..
Karthik_Mahalingam
запустите этот запрос и посмотрите, какое значение вы получаете в БД
выберите слот из назначенного места, где selectdate = 'ваша дата'
ADI@345
txtdate.Текст = Calendar1.Значения свойства selecteddate.Метод toString();
TxtMyDate датавремя = Датавремя.Parse(txtdate.Текст);
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].Параметр connectionString);
string Query = "select slot from assign where selectdate = @date";
SqlCommand cmd = new SqlCommand(Query, cnn);
cmd.параметры.AddWithValue ("@date", txtMyDate);
DataTable dtAdmin = новый DataTable();
SqlDataAdapter da = новый SqlDataAdapter(cmd);
da.Fill(dtAdmin);
если (dtAdmin.Строк.Count > 0)
{
foreach (элемент ListItem в RadioButtonList1.Предметы)
{
если(пункт.Текст == dtAdmin.Строки[0]["слот"].Метод toString())
{
RadioButtonList1.Items[0].Enabled = false;
}
еще
{
RadioButtonList1.Items[0].Enabled = true;
}
}
}
после разбора даты он работает нормально , но не отключает radiobutton selected listitem..
Karthik_Mahalingam
da.Fill(dtAdmin);
if (dtAdmin.Rows.Count > 0)
{
DataTable dtAdmin = null;
foreach (ListItem item in RadioButtonList1.Items)
item.Enabled = item.Text == dtAdmin.Rows[0]["slot"].ToString();
}
ADI@345
Теперь мой код работает нормально, спасибо за помощь, но все еще сталкивается с некоторой проблемой. то есть если у меня есть два слота в моей базе данных , то он отключит два radiobutton listitem, прямо сейчас только один listitem отключается.
txtdate.Текст = Calendar1.Значения свойства selecteddate.Метод toString();
TxtMyDate датавремя = Датавремя.Parse(txtdate.Текст);
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].Параметр connectionString);
string Query = "select slot from assign where selectdate = @date";
SqlCommand cmd = new SqlCommand(Query, cnn);
cmd.параметры.AddWithValue ("@date", txtMyDate);
DataTable dtAdmin = новый DataTable();
SqlDataAdapter da = новый SqlDataAdapter(cmd);
da.Fill(dtAdmin);
если (dtAdmin.Строк.Count > 0)
{
foreach (элемент ListItem в RadioButtonList1.Предметы)
если (пункт.Текст == dtAdmin.Строки[0]["слот"].Метод toString())
{
пункт.Включено = ложь;
}
еще
пункт.Включен = истина;
}
этот код работает нормально , но он отключает только один временной интервал, даже если у меня есть два двух временных интервала в моей базе данных
Karthik_Mahalingam
это просто, сделайте цикл for для итерации строк в datatable. и включите его на основе значения строки.
Karthik_Mahalingam
проверьте приведенный ниже код.
Karthik_Mahalingam
da.Fill(dtAdmin);
string[] slots = dtAdmin.Rows.OfType<datarow>().Select(k=>k["slot"].ToString()).ToArray();
if (dtAdmin.Rows.Count > 0)
{
foreach (ListItem item in RadioButtonList1.Items)
if ( slots.Contains( item.Text ))
{
item.Enabled = false;
}
else
item.Enabled = true;
}
ADI@345
Большое спасибо, сэр, наконец-то мой код работает в соответствии с моими требованиями. но я не понимал этого кода..
строка[] слотов = dtAdmin.Строк.Метод oftype&ЛТ;строкаданных и GT;).Выберите(k=>k["слот"].Метод toString()).Метод toArray();
Karthik_Mahalingam
упрощенная версия
List<string> lst = new List<string>();
foreach (DataRow row in dtAdmin.Rows)
{
lst.Add(row["slot"].ToString());
}
string[] slots = lst.ToArray();
ADI@345
Оки, спасибо вам, сэр, за помощь..
Karthik_Mahalingam
Добро пожаловать