Click here to Skip to main content
15,924,317 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have a single RadioButtonList control with 4 ListItems within it.  At run time, based on a condition in my database, I may need to disable one or more of those ListItems.


What I have tried:

void bind()
   {
       SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
       string Query = "select slot from appoint where selectdate ='" + txtdate.Text + "'";
       DataTable dtAdmin = new DataTable();
       SqlDataAdapter da;
       da = new SqlDataAdapter(Query, cnn);
       da.Fill(dtAdmin);
       if (dtAdmin.Rows.Count > 0)
       {
           foreach (ListItem item in RadioButtonList1.Items)
           {
               if (item.Text == Query)
               {

                   item.Enabled = false;
               }

               else
               {
                   item.Enabled = true;
               }
           }
       }
   }
Posted
Updated 6-Nov-17 23:37pm
v5

1 solution

refer this example


<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>


Quote:
I may need to disable one or more of those ListItems.


string[] itemsToDisable = { "1", "2" };
          foreach (string item in itemsToDisable)
          {
             var listItem =  RadioButtonList1.Items.FindByValue(item);
             if (listItem != null)
                 listItem.Enabled = false;
          }


Note : Formatting the sql Query string is vulnerable to SQL Injection[^] attacks
always use Parameterized queries to prevent SQL Injection Attacks in SQL Server[^]

use FindByText[^] or FindByValue[^] based on how you are populating the list items.
Correction to your code
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;
 
Share this answer
 
v4
Comments
ADI@345 8-Nov-17 0:14am    
txtdate.Text = Calendar1.SelectedDate.ToString("dd/MM/yyyy");
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
string Query = "select slot from appoint where selectdate =@date";
DataTable dtAdmin = new DataTable();
SqlDataAdapter da;
da = new SqlDataAdapter(Query, cnn);
da.Fill(dtAdmin);
if (dtAdmin.Rows.Count > 0)
{
foreach (ListItem item in RadioButtonList1.Items)
{
if (item.Text == Query)
{

item.Enabled = false;
}

else
{
item.Enabled = true;
}
}
}
ADI@345 8-Nov-17 0:15am    
how can i disable radiobuttonlist 2 or 3 listitem based on database condition..
Karthik_Mahalingam 8-Nov-17 0:27am    
If(item.Text == dtadmin.Rows[o]["slot"].To string())
{
ADI@345 8-Nov-17 0:38am    
txtdate.Text = Calendar1.SelectedDate.ToString("dd/MM/yyyy");
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;
da = new SqlDataAdapter(cmd);
da.Fill(dtAdmin);
if (dtAdmin.Rows.Count > 0)
{
foreach (ListItem item in RadioButtonList1.Items)
{
if(item.Text == dtAdmin.Rows[0]["slot"].ToString())
{

RadioButtonList1.Items[0].Enabled = false;
}

else
{
RadioButtonList1.Items[0].Enabled = true;
}
}
}


i change my code but in dtAdmin.Rows.Count >0 it doesnot count , alwys show 0,but i have one record in my database
Karthik_Mahalingam 8-Nov-17 0:42am    
try
   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();
            }

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900