To be brief, I need the Textbox with ID="textComments" to only appear when the dropdown option of 'Other' is selected from the dropdown, and then disappear if another selection is made. I could do this with JS but it needs to be in C#.
<asp:DropDownList runat="server" ID="dropEnquiryType" CssClass="dropdownRequestList">
<asp:ListItem Value="Customer Services" Text="Customer Services"></asp:ListItem>
<asp:ListItem Value="Website" Text="Website"></asp:ListItem>
<asp:ListItem Value="Contract" Text="Contract Hire"></asp:ListItem>
<asp:ListItem Value="Other" Text="Other"></asp:ListItem>
</asp:DropDownList>
<asp:label runat="server" ID="lblComments" AssociatedControlID="textComments" CssClass="textLabel">Comments:</asp:label>
<asp:TextBox runat="server" MaxLength="200" TextMode="MultiLine" Columns="40" Rows="4" ID="textComments" Wrap="true" CssClass="textComments"></asp:TextBox>
And help would be greatly appreciated.
Make the DropDownList first AutoPostBack=true
handle it's SelectedIndexChanged-event
Switch visibility of both controls there
aspx:
<asp:DropDownList AutoPostBack="true" OnSelectedIndexChanged="dropEnquiryType_Changed" runat="server" ID="dropEnquiryType" CssClass="dropdownRequestList">
<asp:ListItem Value="Customer Services" Text="Customer Services"></asp:ListItem>
<asp:ListItem Value="Website" Text="Website"></asp:ListItem>
<asp:ListItem Value="Contract" Text="Contract Hire"></asp:ListItem>
<asp:ListItem Value="Other" Text="Other"></asp:ListItem>
</asp:DropDownList>
codebehind:
protected void dropEnquiryType_Changed(Object sender, EventArgs e)
{
lblComments.Visible = dropEnquiryType.SelectedValue == "Other";
textComments.Visible = lblComments.Visible;
}
If you absolutely have to do this within C#, then a simple check in PreRender should be sufficient:
textComments.Visible = (dropEnquiryType.SelectedValue == "Other");
This will also require you to set AutoPostback on dropEnquiryType, though, which uses ... JavaScript!
Related
I want to make first item of dropdownlist non selectable following is my code.
<asp:DropDownList ID="IssueList" runat="server" Height="24px" Style="margin-left: 0px">
<asp:ListItem>Select One</asp:ListItem>
<asp:ListItem>Bug</asp:ListItem>
<asp:ListItem>Enhancement</asp:ListItem>
<asp:ListItem>Tasks</asp:ListItem>
<asp:ListItem>New Feature</asp:ListItem>
</asp:DropDownList>
Please help me how to do this.
You can also make it disabled in code behind on page load event
protected void Page_Load(object sender, EventArgs e)
{
IssueList.Items[0].Attributes["disabled"] = "disabled";
}
also make your first item selected
<asp:DropDownList ID="IssueList" runat="server" Height="24px" Style="margin-left: 0px">
<asp:ListItem Selected="true" Value="">Select One</asp:ListItem>
<asp:ListItem>Bug</asp:ListItem>
<asp:ListItem>Enhancement</asp:ListItem>
<asp:ListItem>Tasks</asp:ListItem>
<asp:ListItem>New Feature</asp:ListItem>
</asp:DropDownList>
You can add disabled attribte.try with this:
<asp:DropDownList runat="server" ID="id">
<asp:ListItem Text="Test" Value="value" disabled="disabled" />
</asp:DropDownList>
You can add an 'Empty' value item:
<asp:DropDownList ID="IssueList" runat="server" Height="24px" Style="margin-left: 0px">
<asp:ListItem Selected="True"></asp:ListItem>
<asp:ListItem>Select One</asp:ListItem>
<asp:ListItem>Bug</asp:ListItem>
<asp:ListItem>Enhancement</asp:ListItem>
<asp:ListItem>Tasks</asp:ListItem>
<asp:ListItem>New Feature</asp:ListItem>
</asp:DropDownList>
Then you would check for
if (string.IsNullOrEmpty(IssueList.SelectedValue))
You could use attribute as in combination of disabled and selected. may this will help to get resolve your issue.
<asp:ListItem Selected="True" disabled="disabled">Select One</asp:ListItem>
^^^^^^^ ^^^^^^^
I have a form with textbox, radiobutton etc. and would like to have a validationgroup attached to some of the input fields when one dropdown changes to a specific value. Is that possible.
lets say i have this form;
<form>
Name:
<asp:textbox runat="server" id="nametextbox" ValidationGroup="myvalgroup"/>
<asp:RequiredFieldValidator id="nametextboxFieldValidator" runat="server" ErrorMessage="Name?" ValidationGroup="myvalgroup" ControlToValidate="nametextbox" />
Gender: <asp:RadioButtonList runat="server" ID="gender" RepeatDirection="Horizontal" ValidationGroup="myvalgroup">
<asp:ListItem Text="Select gender" Value="" Selected="True"/>
<asp:ListItem Text="Male" Value="Male"/>
<asp:ListItem Text="Female" Value="Female"/>
</asp:RadioButtonList>
<asp:RequiredFieldValidator id="genderFieldValidator" runat="server" ErrorMessage="Gender?" ValidationGroup="myvalgroup" ControlToValidate="gender" />
The answer to life the universe and everything:
<asp:textbox runat="server" id="theanswer" />
Are you finished?
<asp:RadioButtonList runat="server" ID="finished" RepeatDirection="Horizontal" onchange="add-validation-group()" >
<asp:ListItem Text="Are you done?" Value="" Selected="True"/>
<asp:ListItem Text="Yes" Value="Yes"/>
<asp:ListItem Text="No" Value="No"/>
<asp:ListItem Text="Absolutly not, i need 600 more years to think!" Value="NOT-IN-600-YEARS"/>
</asp:RadioButtonList>
<asp:button runat="server" id="submitbutton" />
</form>
Codebehind
function add-validation-group()
if (finished.SelectedValue.ToString() == "Yes")
{
theanswer.Attributes.Add("ValidationGroup", "myvalgroup");
}
end
Ok so my codebehind contains a mixup of everything but just to show what i would like to acomplish, sorry for the codemixing!
So can this be done, add validation to inputfields when onchange on a dropdownlist?
Point me in the right direction, please! :)
Finally i found a solution to my question.
Quite simple i might add.
<script type=text/javascript>
$(document).ready(function () {
$("#<%= finished.ClientID %>").change(function () {
if ($('option:selected', this).text() == 'Yes') {
ValidatorEnable(document.getElementById('<%=theanswerValidator.ClientID%>'), true);
}
});
});
</script>
<form>
Name:
<asp:textbox runat="server" id="nametextbox" ValidationGroup="myvalgroup"/>
<asp:RequiredFieldValidator id="nametextboxFieldValidator" runat="server" ErrorMessage="Name?" ValidationGroup="myvalgroup" ControlToValidate="nametextbox" />
Gender: <asp:RadioButtonList runat="server" ID="gender" RepeatDirection="Horizontal" ValidationGroup="myvalgroup">
<asp:ListItem Text="Select gender" Value="" Selected="True"/>
<asp:ListItem Text="Male" Value="Male"/>
<asp:ListItem Text="Female" Value="Female"/>
</asp:RadioButtonList>
<asp:RequiredFieldValidator id="genderFieldValidator" runat="server" ErrorMessage="Gender?" ValidationGroup="myvalgroup" ControlToValidate="gender" />
The answer to life the universe and everything:
<asp:textbox runat="server" id="theanswer" />
<asp:RequiredFieldValidator id="theanswerValidator" Enabled="false" runat="server" ErrorMessage="Your answer?" ValidationGroup="myvalgroup" ControlToValidate="theanswer" />
Are you finished?
<asp:DropDownList runat="server" ID="finished" >
<asp:ListItem Text="Are you done?" Value="" Selected="True"/>
<asp:ListItem Text="Yes" Value="Yes"/>
<asp:ListItem Text="No" Value="No"/>
<asp:ListItem Text="Absolutly not, i need 600 more years to think!" Value="NOT-IN-600-YEARS"/>
</asp:DropDownList>
<asp:button runat="server" id="submitbutton" />
</form>
I added required field validators to theanswer textbox and added Enabled="false" i then track a onchange event with javascript to see if user selects Yes and if they do enable the requiredfieldvalidator.
In my question i had a Radiobuttonlist for the (are you finished?), But changed that to a DropdownList instead for other reasons but i cant think that this is impossible if you have radiobutton list.
OK, it's not in codebehind but it works.
I did try to do it codebehind but it dident feel user friendly to have a Postback on select change.
If someone is intrested in the codebehind method i did it this way, and it worked but (in my opinion not so user friendly)
On my asp:Dropdownlist i added
OnSelectedIndexChanged="finished_SelectedIndexChanged" AutoPostBack="true"
and in my codebehind i added this:
protected void finished_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
if (ddl.SelectedItem.ToString().Equals("Yes"))
{
theanswerValidator.Enabled = true;
}
else // If someone selects yes and then regret it and selects no then disable validator again
{
theanswerValidator.Enabled = false;
}
}
Anyone know who to display NO text in a radiobutton item but have a value for each?
Here is my radio button list:
<asp:RadioButtonList ID="rdoD4_1" runat="server" RepeatDirection="Horizontal" Width="407px">
<asp:ListItem>0</asp:ListItem>
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
<asp:ListItem>6</asp:ListItem>
<asp:ListItem>7</asp:ListItem>
</asp:RadioButtonList>
Problem is that it displays 0,1,2 etc next to each list item - I want to keep the value but show no text - any ideas?
Try explicitly setting the Value and Text attributes.
<asp:RadioButtonList runat="server">
<asp:ListItem Value="1" Text="" runat="server"></asp:ListItem>
<asp:ListItem Value="2" Text="" runat="server"></asp:ListItem>
</asp:RadioButtonList>
How can i set each list item value dynamically in radio button list?
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem></asp:ListItem>
<asp:ListItem></asp:ListItem>
<asp:ListItem></asp:ListItem>
</asp:RadioButtonList>
In above radio button list the list items i want to set from database.
your help will be highly appreciated.
You must find ListItem by text and change it. Let's think, you have control :
<asp:RadioButtonList ID="yourrdblist" runat="server" RepeatDirection="Horizontal" AutoPostBack="true" CssClass="tarpiukai">
<asp:ListItem Selected="True" Value="0" Text="0"></asp:ListItem>
<asp:ListItem Value="0" Text="1"></asp:ListItem>
<asp:ListItem Value="1" Text="2"></asp:ListItem>
</asp:RadioButtonList>
In this case you can easy change value of ListItem with text "1" to text "bambargija" :
yourrdblist.Items.FindByText("1").Text = "bambargija";
That's easy. Have a look at the basiscs of the RadioButtonList-Control.
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.radiobuttonlist.aspx
If you wanna have access to the inner controls, the ListItems then acces them by using the controls property Items.
Greetings,
Like this:
<asp:RadioButtonList ID="inputs" runat="server" Width="50px">
</asp:RadioButtonList>
..and...
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
inputs.Items.Add("input1");
inputs.Items.Add("input2");
inputs.Items.Add("input3");
inputs.Items.Add("input4");
}
}
This is what I tried...
ddlClientsInSearchResult.DataSource = dtClients;
ddlClientsInSearchResult.DataValueField = dtClients.Columns[0].ToString();
ddlClientsInSearchResult.DataTextField = dtClients.Columns[1].ToString();
ddlClientsInSearchResult.DataBind();
ddlClientsInSearchResult.Items.Insert(0, "Select One");
so that the first item in the list is "Select One", but this doesn't seem to be working for me. This is in the code behind an .aspx page, so I was thinking maybe there was a way I could do it over there...but my internet searching has not turned up a solution.
<asp:DropDownList ID="ddlClients" runat="server" Font-Size="8pt" Font-Names="Tahoma"
Width="200px" AutoPostBack="true" OnSelectedIndexChanged="ddlClients_SelectedIndexChanged">
</asp:DropDownList>
That's the ASP.net code for the DropDownBow that I'm trying to default to "Select One".
Thanks for the help!
Remove this ddlClientsInSearchResult.Items.Insert(0, "Select One"); from code behind and do like...
<asp:DropDownList ID="ddlClients" runat="server" Font-Size="8pt" Font-Names="Tahoma"
Width="200px" AutoPostBack="true" OnSelectedIndexChanged="ddlClients_SelectedIndexChanged"
AppendDataBoundItems="true">
<asp:ListItem Text="Select one" Value="0"></asp:ListItem>
</asp:DropDownList>
Just add this to your markup:
<asp:DropDown>
<asp:ListItem Text="Select One" Value="" Selected="true">Select One</asp:ListItem>
</asp:DropDown/>
the code that worked for me is as below
ddlMonth.SelectedIndex = Convert.ToDateTime(row["cstDOB"].ToString()).Month;
ddlYear.SelectedItem.Text = Convert.ToDateTime(row["cstDOB"].ToString()).Year.ToString();
ddlState.SelectedItem.Text = row["cstState"].ToString();
Add "Select One" as an item declaratively and Use the AppendDataBoundItems="true"
<asp:DropDownList ID="ddlClients" runat="server" AppendDataBoundItems="true" AutoPostBack="true" >
<asp:ListItem Value="0">Select One</asp:ListItem>
</asp:DropDownList>