|
Hi Ankit,
This is my Example.
Consider an object of an Employee that have 200 or more
Data Members EmpNo, EmpName......
The Page1 (Employee Form) has 20 input fields.
Once the User filled the 20 input fields, I will send this object to the Business Component which is in the Business Logic.
After i processed this data object (i.e filling remaining
fields in the EmpObj using some logic), I will send back EmpObj to the same code behind of the Page1 from the Business Component.
Now, all the fields in the EmpObj has some data.
Next the end user should have a conformation page 'Page2' with some more additional readonly fields than Page1.
So what i want is, it is enough to send 'EmpObj' from Code Behind of
the Page1 to Page2 instead of sending
page2.aspx?EmpNo=1&EmpName=Murthy&CmpName=Symbiosys.... like that.
In the same way i have to catch the EmpObj in the Code Behind of the Page2 with 1-10 lines of code.
Please don't mine, i am asking like this. Because I am new in ASP.Net C#.
The above scenario is possible in Java by using RequestDispatcher class in servlet and
Employee empObj = (Employee) Request.getAttribute('EmpObj")
in JSP Pages.
Still if it is not clear, I will try to explain in some more detail.
Thanks and Best Wishes.
Murthy.
|
|
|
|
|
Server.Transfer method
End the current Web form and begin executing a new Web form. This method works only when navigating to a Web Forms page (.aspx).
Using the Transfer Method
Using the Transfer method is similar to executing a hyperlink or using the Redirect method, with one difference: Transfer can retain some information from the source page across requests. Setting the Transfer method’s preserveForm argument to True makes the form’s QueryString, ViewState, and event procedure information available in the destination form.
To be able to read one Web form’s ViewState from another, you must first set the EnableViewStateMac attribute in the Web form’s Page directive to False. By default, ASP.NET hashes ViewState information, and setting this attribute to False disables that hashing so that the information can be read on the subsequent Web form. The following line shows how to disable hashing so that a page’s ViewState can be used from another page:
Visual Basic .NET
<%@ Page language="vb" EnableViewStateMac="false"
Codebehind="RedirectNTransfer.aspx.vb"
Inherits="MCSDWebAppsVB.Transfer1" %>
Visual C#
<%@ Page language="c#" EnableViewStateMac="false"
Codebehind="RedirectNTransfer.aspx.cs" AutoEventWireup="false"
Inherits=" MCSDWebAppsVB.Transfer2" %>
The following event procedure for an ImageButton control shows how information can be passed between forms with the Transfer method:
Visual Basic .NET
' Transfer1.aspx
Private Sub imgTransfer_Click(ByVal sender As System.Object, _
ByVal e As System.Web.UI.ImageClickEventArgs) _
Handles imgTransfer.Click
' Transfer to another form, retaining ViewState.
Server.Transfer("Transfer2.aspx", True)
End Sub
Visual C#
// Transfer1.aspx
private void ImageButton1_Click(object sender,
System.Web.UI.ImageClickEventArgs e)
{
// Transfer to another form, retaining ViewState.
Server.Transfer("Transfer2.aspx", true);
}
WARNING
ASP.NET hashes ViewState information to prevent malicious users from manually changing the information passed back to the server and thus somehow corrupting data stored there. Disabling this hashing decreases the security of your Web application.
Use the Request object’s Form method to retrieve the ViewState information from the source Web form. The following code displays the values of two controls from the Transfer1.aspx Web form after the preceding Transfer method executes:
Visual Basic .NET
' Transfer2.aspx
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim colForm As _
System.Collections.Specialized.NameValueCollection
' Get data from source Web form.
colForm = Request.Form
' Display the value from Webform1's TextBox.
Response.Write("TextBox1.Text: " & _
colForm.Item("TextBox1") & " ")
' Display the x, y coordinates of where the click occurr ed.
Response.Write("ImageButton X, Y coords: " & _
colForm.Item("imgTransfer.x") & ", " & _
colForm.Item("imgTransfer.y") & " ")
End Sub
Visual C#
// Transfer2.aspx
private void Page_Load(object sender, System.EventArgs e )
{
System.Collections.Specialized.NameValueCollection c olForm;
// Get data from the source Web form.
colForm = Request.Form;
// Display the value from Webform1's TextBox.
Response.Write("TextBox1.Text: " + colForm["TextBox1"]
+ " ");
// Display the X, Y coordinated of where the click occurred.
Response.Write("ImageButton X, Y coords: " +
colForm["imgTransfer.x"] + ", " + colForm["imgTransfer.y"]
+ " ");
}
NOTE
The Server object’s Transfer and Execute methods work exclusively with Web forms. Trying to navigate to an HTML page using one of these methods results in a run-time error.
you can also store information in cookies
Well brother I am also new its a place to learn up together
Ankit Aneja
"Nothing is impossible. The word itself says - I M possible"
|
|
|
|
|
I'm a member of a small (3 men) company, developing new .NET app "from garage". This app took over two years of development and now it's time to release it.
But the last question before releasing the final version is: Do we need more code protection?
How should the answer sound?
1) Yes - we have to buy some VERY EXPENSIVE code protector, like Xheo or Salamander. -gulp- But, we can't buy such a product without profit from the first release - a problem.
2) No - we can release all the MSIL code and don't care about "bad boys"
3) No - we can publish some source code (even if the application is commercial), either. There are still "good boys", which tell us, where are the security bugs in our code
Which answer is right?
|
|
|
|
|
Depends on what the app does, and how wide it's market is. If I was, for example, about to release Microsoft Office, I'd want to obsfucate. We do a product into a niche market, which is not very technical, we don't bother to obsfucate it.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Thanks for your reply.
Well, it's an imaging app aimed on digital photography. The market we want to enter is quite small, but we don't kknow if there is something to be afraid of.
|
|
|
|
|
ltinka wrote: No - we can publish some source code (even if the application is commercial), either. There are still "good boys", which tell us, where are the security bugs in our code
An obfuscator can hide bad code. Make sure your code is public ready before selling it, else you might land up on the dailywtf.com
xacc.ide-0.1 released! Download and screenshots
|
|
|
|
|
Imaging application implies you might have some algorithmic stuff in there the workings of which you'd like to keep to yourself. I would if it were a commercial venture anyway. It's a bit of a nightmare really because its really is so simple to pull apart a .NET assembly and leech its contents. If you haven't done so already take a look at Lutz Roeder's .Net Reflector (http://www.aisto.com/roeder/dotnet/[^]) as a means to reconstruct your source - it's depressingly easy.
I don't see the need to protect the general framwork of an application - anyone can recreate this, but the algorithmics I see a bit differently - have you considered providing these in non-managed code?
Regards,
Rob Philpott.
|
|
|
|
|
|
While calling the SqlTransaction method Rollback(), I'm getting a SqlException for Timeout Expired. I've looked all over the SqlTransaction class and don't see a way to set a timeout value for the Rollback command. Does anyone know how to increase the timeout value for this command?
|
|
|
|
|
Hi Mark,
I am not sure.it can be related to the timeout of the sqlcommand instead of sql transaction class.
rakesh
|
|
|
|
|
Hi,
Can any one tell me how to override the System.Windows.Forms.Label.CanSelect property?
Thanks!
Anne
|
|
|
|
|
Why would you want to? Selecting a label control at run-time isn't what I would call an intuitive thing to do.
The property just returns the value of the controls ControlStyles "Selectable" value. If you want to change this so the control is selectable, you'll have to create you're own Label control, inheriting from Label, and just set its Selectable ControlStyle to true.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thank you so much for your response, Dave.
Sorry for being so dumb...
Here is the inherited label we want selectable, could you show me how I would do it:
Thanks for any help you can give.
Anne
<br />
using System;<br />
using System.Collections;<br />
using System.ComponentModel;<br />
using System.Drawing;<br />
using System.Data;<br />
using System.Windows.Forms;<br />
using System.Configuration;<br />
<br />
namespace Arb.Controls.Win<br />
{<br />
public class arbTextLabel : System.Windows.Forms.Label<br />
{<br />
private System.ComponentModel.Container components = null;<br />
<br />
public arbTextLabel()<br />
{<br />
InitializeComponent();<br />
<br />
<br />
}<br />
<br />
protected override void Dispose( bool disposing )<br />
{<br />
if( disposing )<br />
{<br />
if(components != null)<br />
{<br />
components.Dispose();<br />
}<br />
}<br />
base.Dispose( disposing );<br />
}<br />
<br />
#region Component Designer generated code<br />
private void InitializeComponent()<br />
{<br />
components = new System.ComponentModel.Container();<br />
}<br />
#endregion<br />
public override Font Font<br />
{<br />
get<br />
{<br />
return getFont();<br />
}<br />
}<br />
<br />
public override Color ForeColor<br />
{<br />
get<br />
{<br />
return getForeColor();<br />
}<br />
}<br />
<br />
<br />
<br />
public Font getFont()<br />
{<br />
string N = ConfigurationSettings.AppSettings["TextLabelFontName"];<br />
string S = ConfigurationSettings.AppSettings["TextLabelFontSize"];<br />
string FS = ConfigurationSettings.AppSettings["TextLabelFontStyle"];<br />
string GU = ConfigurationSettings.AppSettings["TextLabelFontGraphicUnit"];<br />
string GRI = ConfigurationSettings.AppSettings["TextLabelFontGRI"];<br />
<br />
N = (N==null)?"Verdana":N;<br />
S = (S==null)?"9":S;<br />
FS = (FS==null)?"Regular":FS;<br />
GU = (GU==null)?"Point":GU;<br />
GRI = (GRI==null)?"0":GRI;<br />
<br />
return new System.Drawing.Font(N,(float)(Convert.ToDouble(S)),Helper.getFontStyle(FS),Helper.getGraphicUnit(GU),Convert.ToByte(GRI));<br />
}<br />
<br />
public Color getForeColor()<br />
{<br />
string r = ConfigurationSettings.AppSettings["TextLabelForeColorR"];<br />
string g = ConfigurationSettings.AppSettings["TextLabelForeColorG"];<br />
string b = ConfigurationSettings.AppSettings["TextLabelForeColorB"];<br />
<br />
r = (r==null)?"0":r;<br />
g = (g==null)?"0":g;<br />
b = (b==null)?"0":b;<br />
<br />
return System.Drawing.Color.FromArgb(Convert.ToByte(r),Convert.ToByte(g),Convert.ToByte(b));<br />
}<br />
}<br />
}<br />
<br />
<br />
|
|
|
|
|
AnneThorne wrote: public arbTextLabel()
{
// This call is required by the Windows.Forms Form Designer.
InitializeComponent();
// TODO: Add any initialization after the InitializeComponent call
}
public arbTextLabel()
{
InitializeComponent();
this.SetStyle(ControlStyles.Selectable, true);
this.UpdateStyles();
}
You're control will then be able to receive the input focus.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thank you very much Dave!
|
|
|
|
|
hi,
I am trying to call a dll fn that takes pointer to array as argument form my c# app.
I am doing the following way but its not working.
<br />
DISABLETOUCHSCREENDLL_API int fnDisableTouchScreenS(int *iscrn,int *iEnableDisable)<br />
{}<br />
<br />
[MarshalAs(UnmanagedType.LPArray)]<br />
private int[] iscrno = new int[MAX_SUPPORTED_SCR];<br />
[MarshalAs(UnmanagedType.LPArray)]<br />
private int[] iEnableDisable = new int[MAX_SUPPORTED_SCR];<br />
<br />
[DllImport( "DisableTouchScreenDLL.dll", CharSet = CharSet.Unicode )]<br />
public static extern int fnDisableTouchScreenS(ref int[] iscrno, ref int[] iEnableDisable);<br />
<br />
int[] s_nos = new int[MAX_SUPPORTED_SCR];<br />
int[] t_fs = new int[MAX_SUPPORTED_SCR];<br />
<br />
for(i=0;i<iScreens;i++)<br />
{<br />
s_nos[i] = i;<br />
t_fs[i] = 1;<br />
}<br />
iscrno = s_nos;<br />
iEnableDisable = t_fs;<br />
<br />
if(fnDisableTouchScreenS( ref iscrno, ref iEnableDisable)==0)<br />
{<br />
System.Console.Write("Success");<br />
}<br />
<br />
The function is returning success, but not doing what is expected.
But I know the dll is working fine...but am I using it right??
|
|
|
|
|
Try the following:
[DllImport("DisableTouchScreenDLL.DLL", CharSet = CharSet.Unicode)]
public static extern int fnDisableTouchScreenS(int * iscrno, int * iEnableDisable);
unsafe
{
fixed (int * ps_nos = s_nos, pt_fs = t_fs)
{
if (fnDisableTouchScreenS(ps_nos, pt_fs))
{
...
}
}
}
|
|
|
|
|
if the unsafe solution worked for you you should be able to use marshalling to pass in the arrays. Do a little research on passing c# int arrays to native dll functions. Good luck!!!
|
|
|
|
|
I've been trying to write to a MySQL db with no luck. Selecting the data and filling the dataSet is no problem. But everytime I try to update, delete or insert I get a concurrency violation. Am I just not mapping the columns correctly?
Database: address
Table: contacts
id int(11) not null auto_increment primary key
fname varchar(20)
lname varchar(20)
phone varchar(15)
Here's the code:
/*
* Created by SharpDevelop.
*
*/
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
using System.Data.Odbc;
using System.Data.Common;
namespace mysql
{
/// <summary>
/// Description of MainForm.
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
private System.Windows.Forms.DataGrid dataGrid1;
private System.Windows.Forms.Button btnLoad;
//
//
private OdbcConnection cnn=new OdbcConnection(@"DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=address;USER=root;PASSWORD=system;OPTION=3");
private OdbcDataAdapter da=new OdbcDataAdapter();
private DataSet ds=new DataSet();
private OdbcCommand selectCmd=new OdbcCommand();
private OdbcCommand insertCmd=new OdbcCommand();
private OdbcCommand updateCmd=new OdbcCommand();
private OdbcCommand deleteCmd=new OdbcCommand();
//
//
void MainFormLoad(object sender, System.EventArgs e)
{
this.da.SelectCommand=this.selectCmd;
this.da.InsertCommand=this.insertCmd;
this.da.UpdateCommand=this.updateCmd;
this.da.DeleteCommand=this.deleteCmd;
//
//table mappings
//
this.da.TableMappings.AddRange(new DataTableMapping[]
{
new DataTableMapping("Table","contacts", new DataColumnMapping[]
{
new DataColumnMapping("id","id"),
new DataColumnMapping("fname","fname"),
new DataColumnMapping("lname","lname"),
new DataColumnMapping("phone","phone")
})
});
//
//select command
//
this.selectCmd.CommandText="select id,fname,lname,phone from contacts";
this.selectCmd.Connection=this.cnn;
//
//delete command
//
this.deleteCmd.CommandText="delete from contacts where (id=@id) and
(fname=@fname) and (lname=@lname) and (phone=@phone)";
this.deleteCmd.Connection=this.cnn;
this.deleteCmd.Parameters.Add("@id",OdbcType.Int,4,"id");
this.deleteCmd.Parameters.Add("@fname",OdbcType.VarChar,20,"fname");
this.deleteCmd.Parameters.Add("@lname",OdbcType.VarChar,20,"lname");
this.deleteCmd.Parameters.Add("@phone",OdbcType.VarChar,15,"phone");
//
//insert command
//
this.insertCmd.CommandText="insert into contacts(fname,lname,phone)
values(@fname,@lname,@phone)";
this.insertCmd.Parameters.Add("@id",OdbcType.Int,4,"id");
this.insertCmd.Parameters.Add("@fname",OdbcType.VarChar,20,"fname");
this.insertCmd.Parameters.Add("@lname",OdbcType.VarChar,20,"lname");
this.insertCmd.Parameters.Add("@phone",OdbcType.VarChar,15,"phone");
this.insertCmd.Parameters["@id"].SourceVersion=DataRowVersion.Original;
}
void BtnLoadClick(object sender, System.EventArgs e)
{
this.cnn.Open();
this.da.SelectCommand=this.selectCmd;
this.da.Fill(ds);
this.cnn.Close();
//
this.dataGrid1.DataSource=ds;
this.dataGrid1.DataMember="contacts";
}
}
}
|
|
|
|
|
like, asp:panel, or asp:button, so that i can change the background image or play a sound or something.
You can have the mouse cursor change so there has to be something.
|
|
|
|
|
You'd be better off asking this question in the ASP.NET or Web Developement forums.
You can't do this with server-side code. It'll have to be done in either HTML or client-side JavaScript.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hi,
I have a separate form that pops up when a homemade button on my base form is pressed. On this second form, I get some info and save it when the same kind of homemade button is pressed. So now I need to dispose of the second form. But I get an error with regards to disposal of the homemade button when I say this.Dispose() :
An unhandled exception of type 'System.ObjectDisposedException' occurred in system.windows.forms.dll
Additional information: Cannot access a disposed object named "myButton".
I'm assuming this is because the base form buttons also use "myButton" and now can't get to it?
Is there some way around this?
Thanks again,
Mel
|
|
|
|
|
If you create form2 from form1, you need to do form2.dispose from somewhere in form1. If form2 is opened modally you can doso after the form2.ShowDialog() call (if you're passing results back as a public member/property be sure to retrieve them first).
|
|
|
|
|
I guess I'm not 100% sure how to do this, so here's what I have so far.
On form1:
private void searchClick(object sender, System.EventArgs e)<br />
{<br />
Searching s = new Searching();<br />
s.ShowDialog();<br />
}
Now the second form pops up, the user inputs data I need, and when btnGo is pressed, I need that form to go away. I tried putting the s.Dispose() after the s.ShowDialog() above, but nothing happens. I then tried, under btnGo_Click() on form2 (aka Searching), to get back to form1, but can't get that working properly either. I'm sure I did this wrong (I had the same basic code as under searchClick above). I haven't figured out how to get between classes very well yet, so all help is greatly appreciated.
By the way, I'd love to be able to pass results back as a public member/property, but haven't figured out how to do that yet either (right now I'm saving them in an xml file). If anyone's bored and could give a quick basic example, that would be wonderful!
Anyway, thanks again!!!
Mel
|
|
|
|
|
Have btnGo_click call this.Close(), and searchClick call s.Dispose() after showdialog.
To pass via properties declare them public and assign the return values prior to calling Close(). access them between showdialog and dispose.
|
|
|
|
|