|
thanx for ur help
i did this way
Form3 frmF3 = new Form3();<br />
<br />
frmF3.MdiParent = this.MdiParent;<br />
frmF3.Show();
it worked. thanx again.
|
|
|
|
|
Hi there
can someone please help me?
I want to select a row from form1 and then open another form (form2) which shows the same row but with some more fields...
so..
form 1. datagrid about 4 collums from the database table. then dubbel click on it
form 2. a couple of textfields.. (about 10) which shows all the records in the row.
i use C# winforms.
i've tried a lot of thinks but it just won't work....
|
|
|
|
|
Moddify the constructor of form2 so that it takes the ID of the row and then display the information you need.
On form1 make a event hanlder that will respond to the doubleclick on the datagrid and then make a new form in that event handler that will pass the id of the row to the form2.
Q:What does the derived class in C# tell to it's parent?
A:All your base are belong to us!
|
|
|
|
|
but how?
i actualy got al the coding.. but it just don't work.. and i really dont know why.
public void dataGrid_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)<br />
{<br />
int rowIndex = dataGrid1.CurrentRowIndex;<br />
if (CustomRow != null)<br />
{<br />
CustomRow(this, new CustomRowEventArgs(barry11,dataGrid1,rowIndex));<br />
}<br />
<br />
}
public class CustomRowEventArgs : EventArgs<br />
{<br />
<br />
public Barry1 DaSet;<br />
DataGrid grid;<br />
int row;<br />
<br />
public CustomRowEventArgs(Barry1 DSet,DataGrid Grid,int Row)<br />
{<br />
DaSet = DSet;<br />
grid = Grid;<br />
row = Row;<br />
<br />
}<br />
public Barry1 DSet<br />
{<br />
get { return DaSet; }<br />
}<br />
public DataGrid Grid<br />
{<br />
get { return grid; }<br />
}<br />
public int Row<br />
{<br />
get { return row; }<br />
}
that DaSet.. should be barry11 (my dataset) DaSet was kinne like a test or something..
or what variable or class or something should i put there..
public virtual void customHandler_CustomRow(object sender, CustomRowEventArgs e)<br />
{<br />
Barry1 DaSet = e.DaSet;<br />
DataGrid dataGrid1 = e.Grid;<br />
int row = e.Row;<br />
<br />
textBox.Text = dataGrid1[e.Row,0].ToString();
this textbox stands on the same form so i could test it and see it quick if it works or not..
but it doesn't...
|
|
|
|
|
Quick'n dirty...
In the main form, when a row in the datagrid is double clicked:
<br />
private void dgInfo_DoubleClick(object sender, System.EventArgs e)<br />
{ <br />
Form2 frm=new Form2(ds, dgInfo.CurrentRowIndex);<br />
frm.ShowDialog();<br />
}<br />
In the constructor of Form2:
<br />
public Form2(DataSet ds, int index):this()<br />
{<br />
textBox1.Text=ds.Tables[0].Rows[index][0].ToString();<br />
textBox2.Text=ds.Tables[0].Rows[index][1].ToString();<br />
textBox3.Text=ds.Tables[0].Rows[index][2].ToString();<br />
}<br />
Helpful perhaps...
|
|
|
|
|
If I can help you, sure.
What do you want to know?
|
|
|
|
|
eh first of all the datagrid is on my form.
the and filled with data from my database.
my data set named "barry11"
which is the correct code to select a row from this grid.
second.
which code do i need te read the first field (firsname) into a textbox on the same form.
if that works i'm already pretty happy. to..
i was thinking.
can't I put the selectet row into a parameter and give this one to my second form. where my select query will be "SELECT * FROM BARRY WHERE FIRSTNAME == PARAM1:" Or something like that. just a theorie that i was thinking of.
-- modified at 10:28 Thursday 16th March, 2006
|
|
|
|
|
Rmokkenstorm wrote: my data set named "barry11"
which is the correct code to select a row from this grid.
First, find the index of the selected row in the datagrid by means of dataGridName.CurrentRowIndex. This rowindex corresponds to the index of the underlying dataset.
Rmokkenstorm wrote: second.
which code do i need te read the first field (firsname) into a textbox on the same form.
if that works i'm already pretty happy. to..
textBox2.Text=ds.Tables[0].Rows[index]["firstname"].ToString();
Work with the underlying dataset (ds above) instead of the datagrid.
Rmokkenstorm wrote: i was thinking.
can't I put the selectet row into a parameter and give this one to my second form. where my select query will be "SELECT * FROM BARRY WHERE FIRSTNAME == PARAM1:" Or something like that. just a theorie that i was thinking of.
Sure...
HTH
|
|
|
|
|
Rows[index] ? where does that stand for?
It does not exict in the clas or name space he says
and if i use Rows[row] it works.. but.. i can't see the selected row:S..
my script now
public static event CustomRowHandler CustomRow;
-----------------------------------------------------------------------
public virtual void customHandler_CustomRow(object sender, CustomRowEventArgs e)<br />
{<br />
Barry1 DSet = e.DSet;<br />
DataGrid dataGrid = e.Grid;<br />
int row = e.Row;<br />
<br />
textBox2.Text=barry11.Tables[0].Rows [row]["firstname"].ToString();
-------------------------------------------------------------------------------
public void dataGrid_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)<br />
{<br />
if (CustomRow != null)<br />
{<br />
CustomRow(this, new CustomRowEventArgs(barry11,dataGrid,dataGrid.CurrentRowIndex));<br />
}<br />
<br />
}
-------------------------------------------------------------------------------
public class CustomRowEventArgs : EventArgs<br />
{<br />
<br />
Barry1 dataSet;<br />
DataGrid grid;<br />
int row;<br />
<br />
public CustomRowEventArgs(Barry1 DSet,DataGrid Grid,int Row)<br />
{<br />
dataSet = DSet;<br />
grid = Grid;<br />
row = Row;<br />
<br />
}<br />
public Barry1 DSet<br />
{<br />
get { return dataSet; }<br />
}<br />
public DataGrid Grid<br />
{<br />
get { return grid; }<br />
}<br />
public int Row<br />
{<br />
get { return row; }<br />
}<br />
<br />
}
--------------------------------------------------------------------
I really don't get it...
-- modified at 4:25 Friday 17th March, 2006
|
|
|
|
|
Rmokkenstorm wrote: Rows[index] ? where does that stand for?
It referred to my previous example.
But I got your code executing on my computer
I don't know if you forgot to provide all of your code. But I added a delegate to support the event:
public delegate void CustomRowHandler(object sender, CustomRowEventArgs e);
But more important, I also added the following code snippet to the constructor of the class. In my case, in the constructor of the main form class.
CustomRow+=new CustomRowHandler(customHandler_CustomRow);
You have to associate the delegate to the event.
Then it worked, and the textbox was filled with data.
|
|
|
|
|
i assume you mean here:
InitializeComponent();<br />
barryOracleDataAdapter1.Fill(barry11.Barry);<br />
CustomRow+=new CustomRowHandler(customHandler_CustomRow);<br />
<br />
that doesn't work .
the public delegate void was already in my code i forgot to send it along.
|
|
|
|
|
Que!
Yes, that is the correct place...
Strange... I guess it doesn't matter if you put the CustomRow+=... directly after InitializeComponent().
By the way, what kind of construct is the barry-thing? Cause I changed every occurance of barry1 to the DataSet type.
And the textbox of mine is placed in the same form as the datagrid.
-- modified at 8:07 Friday 17th March, 2006
Also, I moved the code in datagrid_MouseUp() to an event handler triggering on a doubleclick of the grid (as in my first example), that is datagrid_DoubleClick.
|
|
|
|
|
if i want to put them into a new form he comes up whit this error.
No overload for method 'Form2' takes '3' arguments
tis is my code.
public void dataGrid_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)<br />
{ <br />
Form2 frm = new Form2(barry11, dataGrid, dataGrid.CurrentRowIndex);<br />
<br />
frm.Show();<br />
<br />
}<br />
|
|
|
|
|
Check the constructor of Form2; take a look at my first post where I had the quick'n dirty example.
-- modified at 2:57 Monday 20th March, 2006
Now, I see that my example just had two (2) parameters in the constructor. You need three (3).
|
|
|
|
|
i used yours.. but.. it doesn't work .
on my form1 i use this.
<br />
public void dataGrid_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)<br />
{<br />
if (CustomRow != null)<br />
{<br />
CustomRow(this, new CustomRowEventArgs(barry11,dataGrid,dataGrid.CurrentRowIndex));<br />
DataForm1 frm = new DataForm1();<br />
frm.Show();<br />
}<br />
}<br />
it's not very nice but I just want it to work.
and on my dataForm1.
<br />
InitializeComponent();<br />
Form1.CustomRow += new<br />
WindowsApplication30.CustomRowHandler(customHandler_CustomRow);<br />
<br />
<br />
public virtual void customHandler_CustomRow(object sender, WindowsApplication30.CustomRowEventArgs e)<br />
{<br />
Barry1 DSet = e.DSet;<br />
DataGrid dataGrid = e.Grid;<br />
int row = e.Row;<br />
<br />
<br />
editFIRSTNAME.Text = e.DSet.Tables[0].Rows[e.Row]["Firstname"].ToString();<br />
}<br />
i probleby forgot something very stupid just like last time.. but what.
-- modified at 4:29 Monday 20th March, 2006
DataForm1 frm = new DataForm1(barry11, dataGrid.CurrentRowIndex);
his error.. is that he wants 2 arguments...
if i count.. there are 2...
|
|
|
|
|
|
but do you have maybe another solution for me?
|
|
|
|
|
Right now, I haven't I'm afraid.
I'm a bit confused of how your program looks like. In what forms are the event handling placed? What error message do you get? And what is the purpose of Form1.CustomRow+=... and the event handling in the second form. I'm definitely _not_ saying that it is wrong, I just don't understand.
|
|
|
|
|
you can see it as a master detail form.
form1. datagrid.. then click on a row and he should open a detail form "DataForm1"
on this form i Initialize Form1.CustomRow+=... .
my error is
No overload for method 'DataForm1' takes '3' arguments
DataForm1 frm = new DataForm1(barry11,dataGrid, dataGrid.CurrentRowIndex);<br />
frm.Show();<br />
if i put this..
DataForm1 frm = new DataForm1();<br />
frm.show();<br />
he opens the new form.. but doesn't take the CurrentRowIndex with him..
|
|
|
|
|
Sounds like DataForm1 doesn't have a constructor that takes three (3) arguments.
What's the constructors of DataForm1 look like?
|
|
|
|
|
Barry1 DSet = e.DSet;<br />
DataGrid dataGrid = e.Grid;<br />
int row = e.Row;<br />
<br />
<br />
editFIRSTNAME.Text = e.DSet.Tables[0].Rows[e.Row]["Firstname"].ToString();<br />
this one?
and further only the initialze component thing
Form1.CustomRow += new<br />
WindowsApplication30.CustomRowHandler(customHandler_CustomRow);<br />
|
|
|
|
|
Well, what I meant was how the entire constructor block looked like, not only the contents.
For example:
<br />
public class DataForm1<br />
{<br />
public DataForm1(string arg1, DataSet arg) <-- (*) <br />
{<br />
Form1.CustomRow += new<br />
WindowsApplication30.CustomRowHandler(customHandler_CustomRow);<br />
<br />
Barry1 DSet = e.DSet;<br />
DataGrid dataGrid = e.Grid;<br />
int row = e.Row;<br />
<br />
editFIRSTNAME.Text = e.DSet.Tables[0].Rows[e.Row]["Firstname"].ToString();<br />
}<br />
}<br />
(*) As you already know, the number of arguments here must correspond to the call where you create the object. So in this case, the creation of the object would look like:
<br />
DataForm1 frm=new DataForm1("some text", ds);<br />
Unless the number of arguments are the same, you get the error message you have.
But it doesn't make sense, because this would be a beginner error and you don't seem to be a beginner.
HTH
|
|
|
|
|
actualy i am a beginner..
<br />
<br />
namespace WindowsApplication30<br />
{<br />
public class DataForm1 : System.Windows.Forms.Form<br />
{<br />
private WindowsApplication30.Barry1 objBarry1;<br />
private System.Windows.Forms.Button btnLoad;<br />
private System.Windows.Forms.Label lblFIRSTNAME;<br />
private System.Windows.Forms.Label lblLASTNAME;<br />
private System.Windows.Forms.Label lblBIRTHDATE;<br />
private System.Windows.Forms.Label lblRELATIONSHIP;<br />
private System.Windows.Forms.TextBox editFIRSTNAME;<br />
private System.Windows.Forms.TextBox editLASTNAME;<br />
private System.Windows.Forms.TextBox editBIRTHDATE;<br />
private System.Windows.Forms.TextBox editRELATIONSHIP;<br />
private System.ComponentModel.Container components = null;<br />
<br />
public DataForm1()<br />
{<br />
InitializeComponent();<br />
Form1.CustomRow += new<br />
WindowsApplication30.CustomRowHandler(customHandler_CustomRow);<br />
<br />
<br />
}<br />
<br />
<br />
#region Windows Form Designer generated code<br />
private void InitializeComponent()<br />
{<br />
this.objBarry1 = new WindowsApplication30.Barry1();<br />
this.btnLoad = new System.Windows.Forms.Button();<br />
this.lblFIRSTNAME = new System.Windows.Forms.Label();<br />
this.lblLASTNAME = new System.Windows.Forms.Label();<br />
this.lblBIRTHDATE = new System.Windows.Forms.Label();<br />
this.lblRELATIONSHIP = new System.Windows.Forms.Label();<br />
this.editFIRSTNAME = new System.Windows.Forms.TextBox();<br />
this.editLASTNAME = new System.Windows.Forms.TextBox();<br />
this.editBIRTHDATE = new System.Windows.Forms.TextBox();<br />
this.editRELATIONSHIP = new System.Windows.Forms.TextBox();<br />
((System.ComponentModel.ISupportInitialize)(this.objBarry1)).BeginInit();<br />
this.SuspendLayout();<br />
this.objBarry1.DataSetName = "Barry1";<br />
this.objBarry1.Locale = new System.Globalization.CultureInfo("nl-NL");<br />
<br />
this.lblFIRSTNAME.Location = new System.Drawing.Point(10, 43);<br />
this.lblFIRSTNAME.Name = "lblFIRSTNAME";<br />
this.lblFIRSTNAME.TabIndex = 1;<br />
this.lblFIRSTNAME.Text = "FIRSTNAME";<br />
this.editFIRSTNAME.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.objBarry1, "Barry.FIRSTNAME"));<br />
this.editFIRSTNAME.Location = new System.Drawing.Point(120, 43);<br />
this.editFIRSTNAME.Name = "editFIRSTNAME";<br />
this.editFIRSTNAME.TabIndex = 5;<br />
this.editFIRSTNAME.Text = "";<br />
<br />
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);<br />
this.ClientSize = new System.Drawing.Size(776, 382);<br />
this.Controls.Add(this.btnLoad);<br />
this.Controls.Add(this.lblFIRSTNAME);<br />
this.Controls.Add(this.lblLASTNAME);<br />
this.Controls.Add(this.lblBIRTHDATE);<br />
this.Controls.Add(this.lblRELATIONSHIP);<br />
this.Controls.Add(this.editFIRSTNAME);<br />
this.Controls.Add(this.editLASTNAME);<br />
this.Controls.Add(this.editBIRTHDATE);<br />
this.Controls.Add(this.editRELATIONSHIP);<br />
this.Name = "DataForm1";<br />
this.Text = "DataForm1";<br />
this.Load += new System.EventHandler(this.DataForm1_Load);<br />
((System.ComponentModel.ISupportInitialize)(this.objBarry1)).EndInit();<br />
this.ResumeLayout(false);<br />
<br />
}<br />
#endregion<br />
<br />
<br />
public virtual void customHandler_CustomRow(object sender, WindowsApplication30.CustomRowEventArgs e)<br />
{<br />
Barry1 DSet = e.DSet;<br />
DataGrid dataGrid = e.Grid;<br />
int row = e.Row;<br />
<br />
<br />
editFIRSTNAME.Text = e.DSet.Tables[0].Rows[e.Row]["Firstname"].ToString();<br />
}<br />
private void DataForm1_Load(object sender, System.EventArgs e)<br />
{<br />
<br />
}<br />
}<br />
}<br />
there was more but it was all the same.. like the 8 textboxes.. think if you know one.. you know them al
|
|
|
|
|
Hello,
I have 2 panels on my product listing page, namely:
<asp:Panel id="pnlProducts">
<asp:Panel id="pnlError">
Inside the pnlProducts I have a the following piece of code:
<asp:Panel id="pnlProducts" Visible="false" runat="server">
<asp:ObjectDataSource id="odsProductCategories"
TypeName="MyProject.Components.BusinessLogicLayer.Product"
SelectMethod="GetAllCategories" runat="server">
</asp:ObjectDataSource>
<asp:DataList id="dlProductCategories" DataKeyField="CategoryID"
runat="server">
<ItemTemplate>
<div class="ContentBodyArea">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><%# Eval("CategoryName") %>
<div class="verticalSpacer15"></div>
<p class="NoMarginPadding"><%# Eval("CategoryDescription") %></p>
</td>
</tr>
</table>
</div>
</ItemTemplate>
</asp:DataList>
</asp:Panel>
I test on a category id passed through the querystring, if it is not numeric, the error panel is shown, and the products panel is hidden, but I only want the products to be loaded when the queryustring is numeric. How do this? I have it now, that if the querystring id is not numeric, it still loads the data, but it is just not showing.
Please can someone help me?
Regards,
ma se
|
|
|
|
|
I really don't see what the problem is.
If you don't want to do something then simply don't...
I assume that you have heard of "if" structures considering you have a working code that checks if a input paramater is a number
Q:What does the derived class in C# tell to it's parent?
A:All your base are belong to us!
|
|
|
|