I have an aspx form where I want to Enable and Disable
some controls based on the rights assigned to the resprective Users.
The logic is something like this.
IF Condition matched to Y then enable the controls
else The controls should be disabled.
So, I wrote the below code based on condition
if (Hid_Mode.Value != "M")
{
DataTable dtFill = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM WMS_MENU_RIGHTS WHERE MKEY = '" + Session["UserId"].ToString() + "' and MENU_MKEY = '" + Request.QueryString["menuid"].ToString() + "'", constr);
sda.Fill(dtFill);
if (dtFill.Rows[0]["ADD_FLAG"].ToString() != "Y")
{
//Disable control
}
if (dtFill.Rows[0]["MODIFY_FLAG"].ToString() != "Y")
{
//Disable control
}
if (dtFill.Rows[0]["VIEW_FLAG"].ToString() != "Y")
{
//Disable control
}
if (dtFill.Rows[0]["DEL_FLAG"].ToString() != "Y")
{
//Disable control
}
}
public static void DisableFormControl(ControlCollection ChildCtrls)
{
foreach (Control Ctrl in ChildCtrls)
{
if (Ctrl is TextBox)
((TextBox)Ctrl).Enabled = false;
if (Ctrl is DropDownList)
((DropDownList)Ctrl).Enabled = false;
if (Ctrl is CheckBoxList)
((CheckBoxList)Ctrl).Enabled = false;
if (Ctrl is Button)
((Button)Ctrl).Enabled = false;
}
}
But what happening here is
Even if one condition is FALSE and other three are TRUE, it still disables the whole control. I dont know why its happening like this
UPDATE
ON Page load I am disabling every control and after that.
DisableFormControl(Form.Controls);
if (Hid_Mode.Value != "M")
{
DataTable dtFill = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM WMS_MENU_RIGHTS WHERE MKEY = '" + Session["UserId"].ToString() + "' and MENU_MKEY = '" + Request.QueryString["menuid"].ToString() + "'", constr);
sda.Fill(dtFill);
if (dtFill.Rows[0]["ADD_FLAG"].ToString() == "Y")
{
txtAbbreviation.Enabled = true;
txtdesc.Enabled = true;
txtadd1.Enabled = true;
txtadd2.Enabled = true;
txtadd3.Enabled = true;
ddlCountry.Enabled = true;
check_desc.Enabled = true;
btnSaveExit.Enabled = true;
btnDelete.Enabled = false;
btnClear.Enabled = true;
}
if (dtFill.Rows[0]["MODIFY_FLAG"].ToString() == "Y")
{
txtAbbreviation.Enabled = true;
txtdesc.Enabled = true;
txtadd1.Enabled = true;
txtadd2.Enabled = true;
txtadd3.Enabled = true;
ddlCountry.Enabled = true;
check_desc.Enabled = true;
btnSaveExit.Enabled = true;
btnDelete.Enabled = false;
btnClear.Enabled = true;
}
if (dtFill.Rows[0]["VIEW_FLAG"].ToString() == "Y")
{
txtAbbreviation.Enabled = false;
txtdesc.Enabled = false;
txtadd1.Enabled = false;
txtadd2.Enabled = false;
txtadd3.Enabled = false;
ddlCountry.Enabled = false;
check_desc.Enabled = false;
btnSaveExit.Enabled = false;
btnDelete.Enabled = false;
btnClear.Enabled = false;
}
if (dtFill.Rows[0]["DEL_FLAG"].ToString() == "Y")
{
txtAbbreviation.Enabled = true;
txtdesc.Enabled = true;
txtadd1.Enabled = true;
txtadd2.Enabled = true;
txtadd3.Enabled = true;
ddlCountry.Enabled = true;
check_desc.Enabled = true;
btnSaveExit.Enabled = true;
btnDelete.Enabled = true;
btnClear.Enabled = true;
}
}
But still the control is disabled even if condition is true
