I need to loop through all the controls in my asp.net webpage and do something to the control. In one instance I'm making a giant string out of the page and emailing it to myself, and in another case I'm saving everything to a cookie. The problem is masterpages and items with collections of controls inside them. I want to be able to pass in a Page to the method, then have that method be generic enough to loop through all controls in the inner-most content page and work with them. I've tried doing this with recursion, but my recursion is incomplete. I want to pass a Page object into a method, and have that method loop through all controls in the innermost content page. How can I achieve this?
private static String controlToString(Control control)
{
StringBuilder result = new StringBuilder();
String controlID = String.Empty;
Type type = null;
foreach (Control c in control.Controls)
{
try
{
controlID = c.ID.ToString();
if (c is IEditableTextControl)
{
result.Append(controlID + ": " + ((IEditableTextControl)c).Text);
result.Append("<br />");
}
else if (c is ICheckBoxControl)
{
result.Append(controlID + ": " + ((ICheckBoxControl)c).Checked);
result.Append("<br />");
}
else if (c is ListControl)
{
result.Append(controlID + ": " + ((ListControl)c).SelectedValue);
result.Append("<br />");
}
else if (c.HasControls())
{
result.Append(controlToString(c));
}
//result.Append("<br />");
}
catch (Exception e)
{
}
}
return result.ToString();
}
Without Try/catch
Object reference not set to an instance of an object.
On line controlID = .....
I have a loop that runs through a variety of websites and I'd like to put some kind of a postback in the loop so that each time through a textbox would refresh with the url that is currently being considered. I don't know AJAX yet so I'd like to redo the webpage. I am currently using a session variable to hold data for display between page loads. I have tried
Im stuck with declaring a string which is in a loop within another loop.
Dim CompanyDetails As String = "" Dim CompanyRow As DataRow For Each CompanyRow In newdt.Rows CompanyDetails += CompanyRow(1) & " " & CompanyRow(0) & "<br/>"...
How can I get this to see the GetInfo as declared..... since its in a loop within a loop?
For Each Control In Page.Header.Controls How can I do something as above, at the moment getting the error "Control is a Type and Cannot be used as an expression" The Complete Code is as follows Try ' I only do this on my production servers, so I declare those here.'
If Request.ServerVariables("server_name") = [URL] Then ' Allow scripts and css to logged in CMS users' Dim checkLogin As New Controls.Login If checkLogin.IsLoggedIn <> True Then For Each Control In Page.Header.Controls If Control.GetType.Name = "EktronJsControl" Or Control.GetType.Name = "EktronCssControl" Or Control.GetType.Name = "EktronModalCss" Then Page.Header.Controls.Remove(Control) Else ' Removes the extra bubble inline style stuff that wasn't put in a CSS.'' Dim litControl As LiteralControl = Control If litControl.Text = Nothing Then litControl.Text = "" End If ' Removing blank.css file' Dim htmlLink As HtmlLink = Control If htmlLink.Href = "/css/blank.css" Then Page.Header.Controls.Remove(Control) End If End If Next End If End If Catch ex As Exception End Try`
This way buttons are rendered on design view as well. The problem is that number of buttons to render is dynamic based on data in xml file (even if the data was static, the number of button is about 12 and I don't think it is wise to copy paste the same code above 6 times...). I thought by using loop for that:
int i = 1; foreach (Button button in tb.Items) { writer.AddAttribute(HtmlTextWriterAttribute.Type, "button"); writer.AddAttribute(HtmlTextWriterAttribute.Id, this.UniqueID + "butto_Foo" + i); writer.AddAttribute(HtmlTextWriterAttribute.Value, button.ButtonValue); writer.RenderBeginTag(HtmlTextWriterTag.Input); writer.RenderEndTag(); //button i++; }
tb is defined in OnLoad; On run time it works, but on design time I get error: > Error rendering control. And control is not being rendered.
I would like to find out if there is anyone who would know how to read from a database then returns the same number of records that a stored procedure returns and display those records on the webpage there after pass the ID of the record to a variable to another stored procedure that displays the data related to the record that was clicked, I tried doing this in a asp.net repeater but I can't seem to be able to reference the controls inside the repeater.
<Repeater HTML Code> <%@ Page Language="C#" AutoEventWireup="true" CodeFile="OpenLogs.aspx.cs" Inherits="OpenLogs" EnableEventValidation="false" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
I am currently looping through all the controls on my page and setting certain types (TextBox, CheckBox, DropDownList, etc.) to Enabled=False under certain conditions. However I notice an obvious page load increase looping like this. Is it possible to only get certain types of controls from the Page.Controls object rather than Loop through them all? Possibly with something like LINQ?
I'm trying to loop through a manually created row's controls in a gridview and set the visible property.
I can use findcontrol and it works fine and I don't have to loop. But there are a lot of controls, so I just wanna do it in a loop. But it never finds the control type I'm looking for. Here's my code:
I am trying to search the database using Data List and Item Template. I just want to loop the data's from database in a linkbutton and a lable row by row.
DataSet ds = new DataSet(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Description", typeof(string))); dt.Columns.Add(new DataColumn("Auctionno", typeof(string)));
I have a web page with several panels. I one particular panel, I have several radiobuttonlist controls. I added a LinkButton to my web page and when clicked, I want to clear the values in all my radiobuttonlist controls. I have this so far:
Protected Sub ClearRBL(ByVal sender as Object, ByVal e as EventArgs) Handles lbClear.Click Dim ctl as Control For Each ctl In Page.Controls If TypeOf ctl Is RadioButtonList Then DirectCast(ctl, RadioButtonList).ClearSelection() End If Next End Sub
But this does not work. The If TypeOf ctl Is RadioButtonList Then line never finds a RadioButtonList control. How can I make this work?
I have some server controls both textboxes and drop down list box's that I placed on a panel control. My question is I would like to loop through the controls textboxes and drop down list and clear all values.
im learning t-sql, infact i needed its while-loop to loop through records of a table, i found this code in some book:
[Code]....
i understand here that setting the rowcount variable to 1 will force the select statements to return only one record, do all above select statements return one record only?
if the underlined select statement returns one record everytime it is executed, isn't it supposed to return the same first record of the table everytime? is there a better way to loop through a table's records?
iam working with gridview in asp.net3.5,Sqlserver2008 I am retrieving data from a SP into a datatable.i need to store this table into gridview. but am getting the last row from my datatable into my gridview.
So far I have the following code but it doesn't generate the menu?
While reader.Read() ' set title sitetitle = reader.Item("siteName") mydata &= reader.Item("pagetitle") ' check subtitle exists, if so, build menu, loop though subtitles somehow? if not IsDBNull(reader.Item("subtitle")) mydata = "<ul>" mydata &= "<li>" & reader.Item("subtitle") & "</li>" mydata &= "</ul>" end if End while
Qeury and result set below:
sql:
SELECT subpages.subpageid, pages.pageid, sites.sitename, sites.siteid, pages.siteid,pages.pagetitle, subPages.subtitle FROM pages LEFT JOIN sites ON pages.siteid = sites.siteid LEFT JOIN subpages ON subpages.subpageid= pages.pageid WHERE sites.siteID = 1 ORDER BY sites.siteid, pages.pageid, subpages.subpageid ASC
results:
subpageid | pageid | siteid | siteid | pagetitle | subtitle NULL 1 SCHS 1 1 Sandwell Community Healthcare Services NULL NULL 2 SCHS 1 1 About Us NULL NULL 3 SCHS 1 1 Your Services NULL 4 4 SCHS 1 1 Equality and Diversity Team at SCHS 1111 4 4 SCHS 1 1 Equality and Diversity Team at SCHS 2222 4 4 SCHS 1 1 Equality and Diversity Team at SCHS 333 4 4 SCHS 1 1 Equality and Diversity Team at SCHS 44444 NULL 5 SCHS 1 1 Single Equality Scheme NULL NULL 6 SCHS 1 1 Diversity Strands NULL NULL 7 SCHS 1 1 Equality Impact Assessments NULL NULL 8 SCHS 1 1 Quality and Safety Committee NULL NULL 9 SCHS 1 1 Contact Us NULL
I have ten textboxes (txtCO1, txtCO2... txtCO10).I need to set them all to the same text (blank). How can I use a for loop that just changes the number after txtCO, isntead of explicitly setting each text box's text property to ""?
How do I loop through a GridView (the actual GridView, not its data source) to check what's displayed in the first cell (a BoundField with int data) of every row?
I am working on a financial portal and I am having a problem..I don;t know what to call it so i mentioned it as an 'unknown to me' problem..I have a webpage..whenever I click on any button on my webpage, the request goes through..but nothing show up on the webpage..then If I click on another link and then again come back to previous link,then only I see the results of button_click..
e.g.
I have a currency conversion and investment form..so after filling up the form in following way and if I click on "INVEST" then nothing shows up..
so now if i click on any other link and go back to 'buy currency' link I see the result as 'investment successful'
I have a master page which has a DIV with asp:Hyperlink controls functioning as the menu for the site. When I'm on a certain page if (document.title = 'Certain Page'), I want javascript which will loop through all asp:hyperlink controls on the page and hide them (i.e. set to not visible). I know I could probably do this on the server side with less effort, but I'd rather do it via javascript.