|
I dont know why those people dont use RequiredFieldValidators or RegularExpressionValidators for this.... I think those checks both in server as well as client..
Anyway, he can trap others in
form onsubmit="javascript: return validatefunction();"
I guess. I thought he can do the others himself.
|
|
|
|
|
Abhishek Sur wrote: I thought he can do the others himself.
*grin* if he were capable of that, he'd be capable of working out what a regularexpressionvalidator was.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
Yes you are right.
|
|
|
|
|
|
Hellon every one.I have a table as follow;
Node_Id Node_Name Parent_Id
1 Classified 0
2 Job 1
3 Matrimony 1
4 Property 1
5 ChildofJob1 2
6 Childofjob2 2
i am using following code,but its not giving me proper structure.
My logic is,i add the node in to treeview at the same time i also check is this node present into Arraylist or not,if yes then i don't add that node if no then add the node to treeview as well as arraylist also.This procedure used for each and every node of tree.
// For database operation
OdbcConnection con = CodeClass.GetConnetion();
OdbcDataAdapter adapter1 = new OdbcDataAdapter("select * from AdminAddNewItem ", con);
OdbcDataAdapter adapter2 = new OdbcDataAdapter("select * from AdminAddNewItem ", con);
DataSet ds = new DataSet();
adapter1.Fill(ds, "Parent");
adapter2.Fill(ds, "Child");
ds.Relations.Add("relation", ds.Tables["Parent"].Columns["Node_Id"], ds.Tables["Child"].Columns["Parent_Id"]);
// ========================================================================================
//I am takeing a arraylist in which i am going to maintan all nodes
ArrayList list = new ArrayList();
string listitem;
int flage1 = 0;
int flage2 = 0;
//=============================
foreach (DataRow Prow in ds.Tables["Parent"].Rows)
{
// code for add parent nodes
TreeNode pnode = new TreeNode(Prow["Node_Name"].ToString(), Prow["Parent_Id"].ToString());
//code for chech whather the node already present or not
for (int i = 0; i < list.Count; i++)
{
if (pnode.Text.ToString() == list[i].ToString ())
{
flage1++;
break;
}
}
if (flage1 > 0)
{
flage1 = 0;
Response.Write("Node already exist");
}
else
{
TreeView1.Nodes.Add(pnode);
list.Add(pnode.Text.ToString());
}
//code for add Child nodes
// if (Prow.GetChildRows("relation") != null)
{
foreach (DataRow Crow in Prow.GetChildRows("relation"))
{
TreeNode Childnode = new TreeNode(Crow["Node_Name"].ToString());
pnode.ChildNodes.Add(Childnode);
list.Add(Childnode.Text .ToString ());
}
}
}
|
|
|
|
|
Please post your code with proper format.
Abhijit Jana | Codeproject MVP
Web Site : abhijitjana.net
Don't forget to click "Good Answer" on the post(s) that helped you.
|
|
|
|
|
If your code works at all, it defines two levels, not three. I would imagine you can't do this in a way where you just bind to a datasource, or expect a table to work out the details for you. Your code is hideously inefficient on many fronts. It looks to me like it will add every node at the top level, also.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
A tree is a basic data structure and everyone should know to work with that.
When you add a node, you need to find the parent of that node using the parent id. To do this, keep a reference to the root node and iterate recursively until you find the node with the parent id. New node should be added as a child of this node.
Above method has a O(n) complexity where n is the total number of nodes in a tree. An efficient approach will be to keep each node in an associative container with node id as key. When adding each item, look for a TreeNode object in this container. Here is a working code.
void PopulateTreeView(DataTable dt, TreeView tv)
{
Dictionary<int, TreeNode> nodes = new Dictionary<int, TreeNode>();
TreeNode root = null;
foreach (DataRow row in dt.Rows)
{
int parentId = int.Parse(row["Parent_Id"].ToString());
int nodeId = int.Parse(row["Node_Id"].ToString());
string nodeName = row["Node_Name"].ToString();
TreeNode node;
if (nodes.TryGetValue(parentId, out node))
{
TreeNode newNode = new TreeNode(nodeName);
nodes.Add(nodeId, newNode);
node.ChildNodes.Add(newNode);
}
else
{
node = new TreeNode(nodeName);
nodes.Add(nodeId, node);
node.ChildNodes.Add(node);
if (parentId == 0)
root = node;
}
}
tv.Nodes.Add(root);
}
|
|
|
|
|
Good answer bro ..
|
|
|
|
|
|
Hello everyone,
I'm working on a web form and I'm dynamically creating a table on the page with two columns. One column has the text description, and the second has a check box which the user can check or uncheck to indicate that they want that particular item to activated. Because each user will have a different amount of options, I felt it best to build the table rows on the fly after I discover who the user is. The only problem I am fighting with now is that after I build the page and do any post back, the dynamic control is no longer there. Has anyone out there ever tried anything similar? I'm thinking I need to modify the post back somehow to indicate that I want the control to submit the check boxes back to the server so I can process them.
Thanks!
Knowledge is not power, however, the acquisition and appropriate application of knowledge can make you a very powerful individual.
|
|
|
|
|
You need to create the control on every postback. And you need to do it before pageload if you want any sort of viewstate to be restored.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
Hi Christian,
Thanks for the input. Kudos on your blog too!
So, I need to use the Page.PreLoad event and build my control there? Right now I'm building the table using data from my database, so if I did that during the page preload, wouldn't that overwrite the post back arguments? Or do I have that backwards? If I create the table during the preload, will the changes in the post back overwrite the results from the database? Sorry if it sounds like a 'you should already know this' type question. I've been reviewing the articles I've found online about the page lifecycle, but it still seems a little vauge to me.
Knowledge is not power, however, the acquisition and appropriate application of knowledge can make you a very powerful individual.
|
|
|
|
|
compninja25 wrote: So, I need to use the Page.PreLoad event and build my control there?
Init will be a good place for dynamic controls.
It looks like you are displaying tabular data. Why don't you try controls like GridView or DataGrid ? GridView has inbuilt checkbox support. In DataGrid , a checkbox can be added by using a template column. If you can do that, you don't need to worry about the viewstate issues.
|
|
|
|
|
Hi Navaneeth,
Indeed, it is tabular data. I've done what you are suggesting before with much larger amounts of data, but because in general the task at hand is only calling for 2 through 5 options to display to the user, I originally thought it would be quicker to just build a quick table and add the few rows. Anyhoo, I did consider using the data grid, but figured I'd like to look into trying to get the dynamic control working first as a way to learn more about the page life cycle and view state. Hopefully it will come in handy somewhere down the line!
Thanks again for your response!
Knowledge is not power, however, the acquisition and appropriate application of knowledge can make you a very powerful individual.
|
|
|
|
|
compninja25 wrote: So, I need to use the Page.PreLoad event and build my control there?
I believe that is correct.
compninja25 wrote: Right now I'm building the table using data from my database, so if I did that during the page preload, wouldn't that overwrite the post back arguments?
you do it precisely so that you can get your postback data. The control needs to exist in order for the system to populate it with data from postback. I'd expect if you want to put your own data in there, you'd do it in prerender, which is always the right place. But for viewstate to work, it needs to be created before page load.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
Christian Graus wrote: compninja25 wrote:
So, I need to use the Page.PreLoad event and build my control there?
I believe that is correct.
Boss,
I have one small doubt over here, AFAIK , we need to create the control either Init or PreInit for maintaining the post back. Because Though, LoadViewState and Loadpostback Data Calls before Page_Load() , ASP.NET Creates a control hierarchy only at Init event, based on that the postback data and view state data maintains. So, How it would restore view state and postback data if we create control on Pre_Load() ?.
Abhijit Jana | Codeproject MVP
Web Site : abhijitjana.net
Don't forget to click "Good Answer" on the post(s) that helped you.
|
|
|
|
|
Abhijit Jana wrote: we need to create the control either Init or PreInit for maintaining the post back
I guess whatever u said is correct its better to create dynamic controls on Init according to the Event Cycle.Control developers are mostly rely on this event.Otherwise we need to manually keep the View state.
|
|
|
|
|
Yes, But my question was different. We need to create those dynamic control over Init and Preinit() because of maintaining view state and load postback data. And In Init Event ASP.NET Create a control list to do all the operation during page life cycle.
Suppose you are creating one Dynamic Textbox on Page_Load and done some post back after changing some value of that textbox .As per the Page_Life Cycle goes, View State Data for the newly created text box has been saved because, SaveViewdata() calls after Pre_Render and Before Render() .
Its means My View State data has been saved but, now why that data would not restored ? Though my ViewState data has already saved and LoadView State Data is calling before Page_load. So it should restore the data. But It should not. Beacuse, the reason I have said. In Init() asp.net creats an Control Tree. If you create the control on/after Page_Load, they are not a member of that tree.
There is also some workaround for it.
Abhijit Jana | Codeproject MVP
Web Site : abhijitjana.net
Don't forget to click "Good Answer" on the post(s) that helped you.
|
|
|
|
|
What if I need to create a GridView with dynamic template columns based on the user preference or search conditions?
The controls values cannot be accessed in Page_Init event. Therefore you cannot create dynamic controls in Page_Init event based on the values entered in controls such as Textboxe.
Also in Page_Init, if the current request is a postback, the postback data has not yet been loaded and control property values have not been restored to the values from view state.
But during load, if the current request is a postback, control properties are loaded with information recovered from view state and control state.
Therefore, Page Load is also good place to create dynamic controls.
|
|
|
|
|
Hello abhijit,
Thank you for your input. Do you have any suggestions regarding tutorials or white papers on the page life cycle? I've read through this one click here , but the whole concept is still quite foreign to me. I believe that's why I'm running into this problem; because I cannot yet visualize the 'flow' of the page.
Thanks!
Knowledge is not power, however, the acquisition and appropriate application of knowledge can make you a very powerful individual.
|
|
|
|
|
Hello,
I have an ASP.NET website with a SQL backend. I am using the ASP.NET membership provider model. The site can only be accessed by correct username and password. The login credentials for the website and OWA are identical.
I would like to pass the website login credentials directly to OWA so that OWA can be accessed directly from the webiste without having to re-enter username and password.
I am not certain how to securely pass the website credentials to OWA. I would greatly appreciate any assistance that you can provide.
I am slightly new to ASP.NET. If you need any additional information please let me know.
Thank you in advance for your help.
Allison
|
|
|
|
|
AFAIK you can't. One, OWA is on a different domain and the security credential from your ASP.NET app would mean nothing to OWA. Second, OWA is webased access to Exchange which uses Active Directory. So again, the credentials from your forms based authentication in your web app have no meaning to OWA. The only possibility you have is implementing a Single Sign On (SSO) framework.
only two letters away from being an asset
|
|
|
|
|
No Mark its possible. Even I have done this SSO with my ASP.NET Application with OWA. In my web application where user authenticated from AD and there was an link for Email Box with other staff. When user click on that link, I have done the SSO to directly logged in and moved user to OWA Inbox.
Note : I have done SSO with Exchange Server 2007.
Thanks
Abhijit Jana | Codeproject MVP
Web Site : abhijitjana.net
Don't forget to click "Good Answer" on the post(s) that helped you.
|
|
|
|
|
Abhijit Jana wrote: Even I have done this SSO
Notice in my response "The only possibility you have is implementing a Single Sign On (SSO) framework."
only two letters away from being an asset
|
|
|
|