Ajaxtoolkit ConfirmButtonExtender cannot fire - c#

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<ContentTemplate>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click"
Text="Button" PostBackUrl="~/testing2.aspx" />
<asp:ConfirmButtonExtender ID="ConfirmButtonExtender1" runat="server"
targetControlID="Button1"
ConfirmText="Are you sure you want to click this button"
ConfirmOnFormSubmit="True" />
<asp:TextBox ID="TextBox1" runat="server" Height="25px"></asp:TextBox>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
My ConfirmButtonExtender just not working. The website do not pop up a box for me. Do I miss somethings? My code is above.

I think you are missing OnClientCancel property. Check out the working example below.
Ensure your page is using proper master page. This is a working code.
asp:Content ContentPlaceHolderID="SampleContent" Runat="Server">
<script type='text/javascript'>
function cancelClick() {
var label = $get('ctl00_SampleContent_Label1');
label.innerHTML = 'You hit cancel in the Confirm dialog on ' + (new Date()).localeFormat("T") + '.';
}
</script>
<ajaxToolkit:ToolkitScriptManager runat="Server" EnablePartialRendering="true" ID="ScriptManager1" />
<div class="demoarea">
<div class="demoheading">ConfirmButton Demonstration</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:LinkButton ID="LinkButton" runat="server" OnClick="Button_Click">Click Me</asp:LinkButton>
<ajaxToolkit:ConfirmButtonExtender ID="ConfirmButtonExtender1" runat="server"
TargetControlID="LinkButton"
ConfirmText="Are you sure you want to click the LinkButton?"
OnClientCancel="cancelClick" />
<br />
<br />
<asp:Button ID="Button" runat="server" Text="Click Me" OnClick="Button_Click" /><br />
<ajaxToolkit:ConfirmButtonExtender ID="ConfirmButtonExtender2" runat="server"
TargetControlID="Button"
OnClientCancel="cancelClick"
DisplayModalPopupID="ModalPopupExtender1" />
<br />
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="Button" PopupControlID="PNL" OkControlID="ButtonOk" CancelControlID="ButtonCancel" BackgroundCssClass="modalBackground" />
<asp:Panel ID="PNL" runat="server" style="display:none; width:200px; background-color:White; border-width:2px; border-color:Black; border-style:solid; padding:20px;">
Are you sure you want to click the Button?
<br /><br />
<div style="text-align:right;">
<asp:Button ID="ButtonOk" runat="server" Text="OK" />
<asp:Button ID="ButtonCancel" runat="server" Text="Cancel" />
</div>
</asp:Panel>
<asp:Label ID="Label1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</asp:Content>

Related

Update Panel Not working at all

This is my code:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="txtEmailUser" TextMode="SingleLine" placeholder="Enter Email" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ValidationGroup="Panel1" ErrorMessage="RequiredFieldValidator"
ControlToValidate="txtEmailUser" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="buttonBuy" />
</Triggers>
</asp:UpdatePanel>
</div>
<br />
<asp:Button runat="server" ValidationGroup="Panel1" OnClick="buttonBuy_Click" ID="buttonBuy" width: 200px;"Text="Buy" />
I've tried many ways but still not working.
How can I solve it?

ASP.Net C# - Multiple UpdateProgress controls on a page

I'm trying to implement UpdatePanels and UpdateProgress controls. I have two UpdatePanels that contain two different DropDownLists (ddlQuestion5IDs and ddlQuestion6IDs).
When I change the selected index of ddlQuestion6IDs, the UpdateProgress loads for both UpdatePanels/DropDownLists. Is this how they normally behave and is there a way of only displaying the corresponding UpdateProgress for each UpdatePanel?
<p>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label6" runat="server" Text="Question 5:" Font-Bold="true"></asp:Label>
<br />
<asp:DropDownList ID="ddlQuestion5IDs" runat="server" OnSelectedIndexChanged="ddlQuestion5IDs_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DynamicLayout="true">
<ProgressTemplate>
<img src="images/loader.gif" height="20" />
</ProgressTemplate>
</asp:UpdateProgress>
<br />
<asp:Label ID="Label19" runat="server" Text="Question type:" Font-Italic="true"></asp:Label>
<br />
<asp:Label ID="lblQuestion5Type" runat="server" Text=""></asp:Label>
<br /><br />
<asp:Label ID="Label22" runat="server" Text="Question:" Font-Italic="true"></asp:Label>
<br />
<asp:Label ID="lblQuestion5" runat="server" Text=""></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlQuestion5IDs" EventName="SelectedIndexChanged"/>
</Triggers>
</asp:UpdatePanel>
</p>
<p>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label7" runat="server" Text="Question 6:" Font-Bold="true"></asp:Label>
<br />
<asp:DropDownList ID="ddlQuestion6IDs" runat="server" OnSelectedIndexChanged="ddlQuestion6IDs_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
<asp:UpdateProgress ID="UpdateProgress2" runat="server" DynamicLayout="true">
<ProgressTemplate>
<img src="images/loader.gif" height="20" />
</ProgressTemplate>
</asp:UpdateProgress>
<br />
<asp:Label ID="Label21" runat="server" Text="Question type:" Font-Italic="true"></asp:Label>
<br />
<asp:Label ID="lblQuestion6Type" runat="server" Text=""></asp:Label>
<br /><br />
<asp:Label ID="Label24" runat="server" Text="Question:" Font-Italic="true"></asp:Label>
<br />
<asp:Label ID="lblQuestion6" runat="server" Text=""></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlQuestion6IDs" EventName="SelectedIndexChanged"/>
</Triggers>
</asp:UpdatePanel>
</p>
By adding a AssociatedUpdatePanelID="UpdatePanelID" property to UpdateProgress

ASP.NET button link overwrites folder extension in URL

I feel almost stupid asking this because I think the answer is probably very basic. But, here it goes.
I am designing a website with a button that "rolls dice" then enables other buttons on the page (categories in my game), which ultimately, will use those buttons to go to the proper category. So, in effect, [click "roll ..."], the C# of the page (Game.aspx.cs) processes which buttons to enable, display/enable those buttons for click-ability.
My problem is this:
The page is
[domain]/UncommonSense/Game.aspx
but after I click the "roll ..." button the URL turns to
[domain]/Game.aspx#/Game.aspx
This causes a problem in the categories buttons because I need to redirect to
[domain]/UncommonSense/Question.aspx
but since Game.aspx#/ has taken the place of UncommonSense/ it fails.
CODE:
Okay, here is the code in my Game.aspx file. The button is the "ID=Roll" button listed right below "Label12." The code behind is literally right now a blank function so it is not doing anything on the C# side except posting back (apparently). However, when that button is clicked the URL goes from:
[domain]/UncommonSense/Game.aspx
to
[domain]/Game.aspx#/Game.aspx
NOTE: I just tested from a root directory and it did about the same thing:
[domain]/Game.aspx
became
[domain]/Game.aspx#/Game.aspx
Maybe this has something to do with the form?
<%# Page Language="C#" AutoEventWireup="true" CodeFile="Game.aspx.cs" Inherits="Uncommon_Sense.Game" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Uncommon Sense</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript">
</script>
</head>
<body>
<form id="form1" runat="server">
<div data-role="page">
<div data-role="header" data-theme="b">
<h1><asp:Label ID="Label1" runat="server" Text="Uncommon Sense"></asp:Label></h1>
</div>
<div data-role="content">
<h4><asp:Label ID="Label4" runat="server" Text="Game Statistics"></asp:Label></h4>
<asp:Label ID="Label11" runat="server" data-mini="true" Text=""></asp:Label>
<asp:Label ID="Label10" runat="server" data-mini="true" Text=""></asp:Label>
<h4><asp:Label ID="Label2" runat="server" Text="Game Play"></asp:Label></h4>
<asp:Button ID="Roll" runat="server" Text="Roll Dice ..." data-mini="true"
onclick="Roll_Click" />
<hr width="80%" />
<div class="ui-grid-c">
<div class="ui-block-a">
<asp:Button ID="btnShortStuffChecked" runat="server" Text="Short Stuff" data-mini="true"
data-icon="check" Enabled="False" Visible="False" />
<asp:Button ID="btnShortStuffNotChecked" runat="server" Text="Short Stuff" data-mini="true"
Enabled="False" Visible="False" onclick="btnShortStuffNotChecked_Click" /></div>
<div class="ui-block-b">
<asp:Button ID="btnWhoSaidChecked" runat="server" Text="Who Said?" data-mini="true"
data-icon="check" Enabled="False" Visible="False" />
<asp:Button ID="btnWhoSaidNotChecked" runat="server" Text="Who Said?" data-mini="true"
Enabled="False" Visible="False" /></div>
<div class="ui-block-c">
<asp:Button ID="btnCommonQuipChecked" runat="server" Text="Common Quip" data-mini="true"
data-icon="check" Enabled="False" Visible="False" />
<asp:Button ID="btnCommonQuipNotChecked" runat="server" Text="Common Quip" data-mini="true"
Enabled="False" Visible="False" /></div>
<div class="ui-block-d">
<asp:Button ID="btnRhymeTimeChecked" runat="server" Text="Rhyme Time" data-mini="true"
data-icon="check" Enabled="False" Visible="False" />
<asp:Button ID="btnRhymeTimeNotChecked" runat="server" Text="Rhyme Time" data-mini="true"
Enabled="False" Visible="False" /></div>
<div class="ui-block-a">
<asp:Button ID="btnAnythingGoesChecked" runat="server" Text="Anything Goes" data-mini="true"
data-icon="check" Enabled="False" Visible="False" />
<asp:Button ID="btnAnythingGoesNotChecked" runat="server" Text="Anything Goes" data-mini="true"
Enabled="False" Visible="False" /></div>
<div class="ui-block-b">
<asp:Button ID="btnDefineItChecked" runat="server" Text="Define It" data-mini="true"
data-icon="check" Enabled="False" Visible="False" />
<asp:Button ID="btnDefineItNotChecked" runat="server" Text="Define It" data-mini="true"
Enabled="False" Visible="False" /></div>
<div class="ui-block-c">
<asp:Button ID="btnAllAbroadChecked" runat="server" Text="All Abroad" data-mini="true"
data-icon="check" Enabled="False" Visible="False" />
<asp:Button ID="btnAllAbroadNotChecked" runat="server" Text="All Abroad" data-mini="true"
Enabled="False" Visible="False" /></div>
<div class="ui-block-d">
<asp:Button ID="btnSpellItChecked" runat="server" Text="Spell It" data-mini="true"
data-icon="check" Enabled="False" Visible="False" />
<asp:Button ID="btnSpellItNotChecked" runat="server" Text="Spell It" data-mini="true"
Enabled="False" Visible="False" /></div>
</div>
<h4><asp:Label ID="Label3" runat="server" Text="Settings"></asp:Label>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Question.aspx">HyperLink</asp:HyperLink>
</h4>
<label for="slider-0">Computer Difficulty:</label>
<input type="range" name="slider" id="slider-0" value="2" min="1" max="4" />
<h3><asp:Label ID="Label5" runat="server" Text="Label"></asp:Label></h3>
<asp:Button ID="ChoiceA" runat="server" Text="Button" onclick="ChoiceA_Click" />
<asp:Button ID="Button2" runat="server" Text="Button" Visible="False" />
<asp:Button ID="Button3" runat="server" Text="Button" Visible="False" />
</div>
</div>
</form>
</body>
</html>
UPDATE:
And the answer is ... JQuery Mobile!
By simply removing the reference to JQuery Mobile the problem is solved so apparently this is something in their library that changes URLs. That sucks because I liked using JQuery Mobile. Oh well, my comments will stop now on the annoyance because I am appreciative of the 99.9% of the stuff they do that helps. But, for the record...
ANY LINK will have:
linker.aspx
changed to:
linker#/linker.aspx
for some reason.

Combobox selected item is deleted once selected . Invalid Postback or Callback argument

I have four textboxes one combobox and one button ( and some other controls) in my page . Based on the values typed in the textboxes the related values are updated in the combobox. On clicking the submit button in my page It was giving the following error .
"Invalid postback or callback argument. Event validation is enabled using in configuration or in a page. For Secuity purposes,this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected . Use the ClientScriptManager.RegisterForEventsValidation method in order to register the postback or callback data for validation."
Now in the page directive I added
<%#Page EnableEentValidation="false">
When I type the values in the four textboxes the corresponding value will appear in the cobobox . But when I select that combobox value, the selected value wil be deleted . What is the reason for this ?
<%# Page Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true" CodeBehind="AddeChecklist.aspx.cs"
Inherits="LabTrack.WebApplication.Echecklist.AddeChecklist" EnableEventValidation ="false" %>
<%# Register TagPrefix="Labinal" TagName="AutoCompleteControl" Src="~/UserControls/AutoCompleteEnabledWebUserControl.ascx" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<link href="../Styles/CheckListRev.css" rel="stylesheet" type="text/css" />
<!-- Style for the page -->
<link href="../Styles/AddeChecklist.css" rel="stylesheet" type="text/css" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server">
</asp:ScriptManager>
<asp:Panel ID="ErrorMessagePanel" CssClass="ErrorPanel" Visible="true" runat="server">
<div class="ErrorDiv">
<asp:BulletedList CssClass="ErrorMessage" ID="ErrorMessageBulletedList" runat="server">
</asp:BulletedList>
</div>
</asp:Panel>
<div class="PageTitle">
<asp:Label ID="PageHeaderLabel" runat="server"></asp:Label>
</div>
<div class="MainDiv">
<div style="text-align: center;">
<div class="PlaceHolder">
<table id="formTable">
<tr>
<td>
<asp:UpdatePanel runat="server" ID="updatepanelCustomer" UpdateMode="Conditional">
<ContentTemplate>
<span class="boldLabelLong">Customer:</span><br />
<asp:TextBox ID="CustomerNameTextBox" Width="200" runat="server"></asp:TextBox>
<asp:HiddenField ID="IxCustomerHiddenField" runat="server" />
<asp:Button ID="customerTriggerbutton" runat="server" Text="Button" Style="display: none;" />
</ContentTemplate>
</asp:UpdatePanel>
</td>
<td>
<asp:UpdatePanel runat="server" ID="updatepanelProgram" UpdateMode="Conditional">
<ContentTemplate>
<span class="boldLabelLong">Program:</span><br />
<asp:TextBox ID="ProgramNameTextBox" Width="200" runat="server"></asp:TextBox>
<asp:Button ID="programTriggerbutton" runat="server" Text="Button" Style="display: none;" />
<asp:HiddenField ID="IxProgramHiddenField" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="customerTriggerbutton" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</td>
<td>
<asp:UpdatePanel runat="server" ID="updatepanelWorkPackage" UpdateMode="Conditional">
<ContentTemplate>
<span class="boldLabelLong">WorkPackage:</span><br />
<asp:TextBox ID="WorkPackageNameTextBox" Width="200" runat="server"></asp:TextBox>
<asp:HiddenField ID="IxWorkPackageHiddenField" runat="server" />
<asp:Button ID="workPackageTriggerbutton" runat="server" Text="Button" Style="display: none;" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="programTriggerbutton" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</td>
<td>
<asp:UpdatePanel runat="server" ID="updatepanelActivity" UpdateMode="Conditional">
<ContentTemplate>
<span class="boldLabelLong">Activity:</span><br />
<asp:TextBox ID="ActivityNameTextBox" Width="200" runat="server"></asp:TextBox>
<asp:HiddenField ID="IxActivityHiddenField" runat="server" />
<asp:Button ID="activityTriggerbutton" runat="server" Text="Button" Style="display: none;" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="workPackageTriggerbutton" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="activityTriggerbutton" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</td>
</tr>
</table>
</div>
<div class="PlaceHolder">
<asp:Label ID="TemplateLabel" Text="Template:" CssClass="ControlLabel" runat="server"></asp:Label>
<asp:UpdatePanel runat="server" ID="updatepanelTemplate" UpdateMode="Conditional">
<ContentTemplate>
<asp:DropDownList ID="TemplateSelectDropDownList" runat="server" Width="400" Visible="true"
AutoPostBack="true">
</asp:DropDownList>
<asp:HiddenField ID="IxTemplateHiddenField" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="workPackageTriggerbutton" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Panel ID="SustainPanelTemplateOwner" Visible="true" runat="server">
<div>
<asp:Label ID="TemplateOwnerLabel" Text="Owner:" CssClass="ControlLabel" runat="server"></asp:Label>
<asp:TextBox ID="TemplateOwnerTextBox" CssClass="controlMargin" Width="400" runat="server"></asp:TextBox>
</div>
</asp:Panel>
<asp:HiddenField ID="IxDeliverableHiddenField" runat="server" />
<asp:HiddenField ID="IxReleaseActionHiddenField" runat="server" />
<asp:HiddenField ID="IxConfigHiddenField" runat="server" />
<asp:HiddenField ID="IxTemplateOwnerHiddenField" runat="server" />
<asp:HiddenField ID="TemplateSelectedSnameHiddenField" runat="server" />
<asp:HiddenField ID="TemplateOwnerSelectedsNameHiddenField" runat="server" />
<asp:HiddenField ID="DeliverableSelectedHiddenField" runat="server" />
<div>
<asp:Label ID="DeliverableLabel" CssClass="ControlLabel" runat="server" Text="Deliverable:"></asp:Label>
<asp:TextBox ID="DeliverableTextBox" CssClass="controlMargin" Width="400" runat="server"></asp:TextBox>
</div>
<asp:Panel ID="SustainPanelConfig" Visible="true" runat="server">
<div>
<asp:Label ID="ConfigurationLabel" runat="server" Text="Configuration:" CssClass="ControlLabel"></asp:Label>
<select id="ConfigurationSelect" class="controlMargin">
<option></option>
</select>
</div>
</asp:Panel>
<asp:Panel ID="SustainPanelRelease" Visible="true" runat="server">
<div>
<asp:Label ID="ReleaseActionLabel" CssClass="ControlLabel" runat="server" Text="Release Action:"></asp:Label>
<asp:TextBox ID="ReleaseActionTextBox" CssClass="controlMargin" Width="400" runat="server"></asp:TextBox>
</div>
</asp:Panel>
<asp:Panel ID="SustainPanel" Visible="true" runat="server">
<div class="SustainPanelControls">
<div>
<asp:Label ID="ChangeLabel" Text="Change #: " runat="server"></asp:Label>
</div>
<div>
<asp:TextBox ID="ChangeTextBox" Width="110" runat="server"></asp:TextBox>
</div>
<div>
<asp:Label ID="SupplementLabel" Text="Supplement: " runat="server"></asp:Label>
</div>
<div>
<asp:TextBox ID="SupplementTextBox" Width="80" runat="server"></asp:TextBox>
</div>
<div>
<asp:Label ID="NewWrrLabel" Text="WRR #: " runat="server"></asp:Label>
</div>
<div>
<asp:TextBox ID="NewWrrTextBox" Width="80" runat="server"></asp:TextBox>
</div>
<div>
<asp:Label ID="DddLabel" Text="3D: " runat="server"></asp:Label>
</div>
<div>
<asp:TextBox ID="DddTextBox" Width="80" runat="server"></asp:TextBox>
</div>
</div>
<div>
<table id="DesignDataTable2">
<tr>
<td>
<asp:Label ID="AllFbSheetsWrrLabel" Text="All F/B Sheets w/WRR #:" CssClass="ControlLabel" runat="server"></asp:Label>
</td>
<td>
<asp:TextBox CssClass="completeControl" ID="AllFbSheetsWrrTextBox" Width="588" Rows="2"
TextMode="MultiLine" runat="server"></asp:TextBox>
</td>
</tr>
</table>
</div>
</asp:Panel>
</div>
<div class="EditButtonGroup">
<input id="EditButton" type="button" value="Edit" class="ButtonSettings" />
<input id="RemoveButton" type="button" value="-" class="ButtonSettings" />
<input id="AddButton" type="button" value="+" class="ButtonSettings" />
</div>
</div>
<div class="ViewData">
<div class="ViewDataDiv">
<table id="DesignDataTable" class="designDataTable">
<tbody>
</tbody>
</table>
</div>
</div>
<div class="submitButtonDiv">
<asp:Button ID="SubmitButton" runat="server" Text="Button Text" class="submitButtonCreateChecklist" />
</div>
</div>
</asp:Content>
You are creating new values on the client side, and posting them back to the server.
For security reasons ASP.NET implements "event validation". When even validation is enabled, if the server creates a combo with 3 possible values, it will only accept this values on postback. If you create a different value and send it back to the server, you get the error you're referring to.
Here you have some info:
Page.EnableEventValidation Property
You can use ClientScriptManager.RegisterForEventValidation Method if you know which are the possible values generated on the client side, or disable validation completely if you don't know them in advance.
To disable validation:
You set the EnableEventValidation property by setting the enableEventValidation attribute of the # Page directive or the enableEventValidation attribute of the pages element in the Web.config file. If you set this property in code, you must set it before the page is initialized.
Sounds like an issue with Viewstate overriding the values.
Try fetching the value directly using Request.Form[Dropdown.ClientId]

How to set a button property for multiple buttons using foreach?

I have 12 buttons in ASP.NET page. I want to color the button; But My code is not work. I will check with break point but button.BackColor = Color.DarkGreen; code is not executed.
ASP Design Coding -
<form id="form1" runat="server" style="background-color:Silver; height:100%; min-height:300px">
<div style="height:100%;">
<div style="height:20%;">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
<div id="content" runat="server" class="content" style="height:70%; min-height:180px">
<div >
<asp:Button ID="Button1" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button2" runat="server" Text="Button" style="width:32%"
Enabled="False"/>
<asp:Button ID="btnUp" runat="server" Text="UP" onclick="btnUp_Click" style="width:32%" /> <br /><br />
<asp:Button ID="Button3" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button4" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button5" runat="server" Text="Button" style="width:32%"
Enabled="False" /> <br /><br />
<asp:Button ID="Button6" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button7" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button8" runat="server" Text="Button" style="width:32%"
Enabled="False" /> <br /><br />
<asp:Button ID="Button9" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button10" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="btnDown" runat="server" Text="DOWN" onclick="btnDown_Click" style="width:32%" /> <br /><br />
</div><!-- /grid-b -->
</div>
<div id="footer" class="footer" style="height:10%;">
<a href="OutLet.aspx" >Home</a>
Selection
</div>
</div>
</form>
*C# Coding - *
var buttons = this.form1.Controls.OfType<Button>();
foreach (var button in buttons)
{
button.BackColor = Color.DarkGreen;
}
Replace one of your divs with an ASP.NET Panel(which is rendered as div but can be referenced from codebehind):
<asp:Panel id="ButtonPanel" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button2" runat="server" Text="Button" style="width:32%"
Enabled="False"/>
<asp:Button ID="btnUp" runat="server" Text="UP" onclick="btnUp_Click" style="width:32%" /> <br /><br />
<asp:Button ID="Button3" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button4" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button5" runat="server" Text="Button" style="width:32%"
Enabled="False" /> <br /><br />
<asp:Button ID="Button6" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button7" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button8" runat="server" Text="Button" style="width:32%"
Enabled="False" /> <br /><br />
<asp:Button ID="Button9" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="Button10" runat="server" Text="Button" style="width:32%"
Enabled="False" />
<asp:Button ID="btnDown" runat="server" Text="DOWN" onclick="btnDown_Click" style="width:32%" /> <br /><br />
</asp:Panel>
Then you can loop all controls in this panel, take every button and do what you need to do:
foreach(Control c in ButtonPanel.Controls){
if(c.GetType()==typeof(Button)){
Button btn = (Button)c;
btn.BackColor = Color.DarkGreen;
}
}
Edit: as mentioned by #Abbas, if using at least .NET framework 3.5 you can use the Enumerable.OfType method:
foreach(Button btn in ButtonPanel.Controls.OfType<Button>()) {
btn.BackColor = System.Drawing.Color.DarkGreen;
}
To answer your question, the problem here is that the Controls property will only give you direct child controls of form1. To get your buttons, use:
var buttons = this.content.Controls.OfType<Button>();
However I would also agree with Jayanga, CSS would do the job better.
The controls collection only contains immediate children. My guess is that var buttons has zero items in it.
foreach( Control c in this.[immediate parent ID].Controls )
{
Button b = c as Button;
if( b != null )
{
b.BackColor = Color.DarkGreen;
}
}
As #Jayanga's comment points out, you can (and should) set the styles of the buttons using CSS in the page.
Apart from any need to specifically use codebehind for setting background color of your buttons, I recommend you to use javascript to achieve this as it is really fast. Eample here

Categories

Resources