|
Thank you very much, it seems to be functioning now.
|
|
|
|
|
I design a form which show color scheme on datagridview(alternate rows).it work fine. But when I call it from mdi parent form menu strip tab, Then it does not show color on datagridview(which fill on form load function).When I run only child form it shows like color on gridview3 and datagridview4.But when I call from parent then it does not show color in datagridview3(alternate rows) and datagridview4(alternate rows).
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.SelectedItem = "Select Gender";
using (SqlConnection con = new SqlConnection(conn))
{
SqlDataAdapter sda = new SqlDataAdapter("getdata", con);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet ds = new DataSet();
sda.Fill(ds);
ds.Tables[0].TableName = "Product";
ds.Tables[1].TableName = "Category";
dataGridView3.DataSource = ds.Tables["Product"];
dataGridView4.DataSource = ds.Tables["Category"];
}
gridrowcolor();
}
public void gridrowcolor()
{
DataGridViewCellStyle st = new DataGridViewCellStyle();
st.Font = new Font("Arial", 12, FontStyle.Bold);
for (int i = 0; i < dataGridView4.Rows.Count-1; i++)
{
int ii = Convert.ToInt32(dataGridView4.Rows[i].Cells[0].Value.ToString());
if (ii % 2 == 0)
{
dataGridView4.Rows[i].DefaultCellStyle.BackColor = Color.Gray;
dataGridView4.Rows[i].DefaultCellStyle = st;
}
else
dataGridView4.Rows[i].DefaultCellStyle.BackColor = Color.Brown;
}
for (int i = 0; i < dataGridView3.Rows.Count - 1; i++)
{
dataGridView3.CellBorderStyle = DataGridViewCellBorderStyle.None;
DataGridViewCellStyle style = new DataGridViewCellStyle();
style.Font = new Font(dataGridView3.Font, FontStyle.Bold);
int ii = Convert.ToInt32(dataGridView3.Rows[i].Cells[0].Value.ToString());
if (ii % 2 == 0)
{
dataGridView3.Rows[i].DefaultCellStyle.BackColor = Color.Yellow;
dataGridView3.Rows[i].DefaultCellStyle = style;
dataGridView3.DefaultCellStyle.SelectionForeColor = Color.Chocolate;
}
else
dataGridView3.Rows[i].DefaultCellStyle.BackColor = Color.Orange;
}
}
From Parent MDI Form
private void receiptCancelRequestToolStripMenuItem_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
frm.MdiParent = this;
frm.Show();
}
modified 9-Dec-15 6:37am.
|
|
|
|
|
You need to show us the code and explain where you think it is going wrong. Please edit your question and add the details. Note: please ensure you add <pre> tags around your code, you can use the code link above the edit window to do it.
|
|
|
|
|
I have a nice idea for the work of the program running on Android platform
A Dictionary Is it possible to help CODE
|
|
|
|
|
OK.... what? Your post doesn't make any sense at all. Are you asking how to write a Dictionary application?
|
|
|
|
|
Same question posted on QA using the name 'eng_aza'
Please do not double-post.
«I want to stay as close to the edge as I can without going over. Out on the edge you see all kinds of things you can't see from the center» Kurt Vonnegut.
|
|
|
|
|
Please make your question understandable.
|
|
|
|
|
Gentleman,
And so it goes... I created the following code to accept data from my dataset on another page and propagate it in a report viewer.
private void DisplayReport_Load(object sender, EventArgs e)
{
dataGridViewReport.DataSource = null;
DataTable dt = ds.Tables[0];
dataGridViewReport.DataSource = ds.Tables[0].DefaultView;
this.reportViewer1.Reset();
this.reportViewer1.LocalReport.ReportPath = Application.StartupPath + @" \Report1.rdlc";
ReportDataSource rds = new ReportDataSource("Precheck Report", dt);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.RefreshReport();
}
When the page loads, this page accepts the dataset value from the constructor and uses it in the code above. This has been an ordeal up until now, but I think this might be close. I think the problem might be that the report file cannot be found. Now, when I created the report file (Report1.rdlc), it appears with the other form files. What I thought I read is that this would then be located, on RUNTIME, in the /bin OR /release folder, but it does not appear to be there, nor can I copy it to that location. I cannot find where the actual path is, only the path while it is not running. So ... first, I am not sure if I have the code correct to create the report but it is no longer throwing any errors. The view display simply says that it cannot locate this file. And second, just where should I be pointing at so that this code (or any code) has the correct path to the file so the report can be created. Thank You!
|
|
|
|
|
You need to check the "Properties" (Build Action; Copy ... option) of the report in Solution Explorer ... That will tell you where the report winds up.
Consider making the report an "embedded resource" and referencing it that way.
(Review your LocalReport object options).
|
|
|
|
|
Thank you Gerry. I did both. No Difference. I appreciate your response. Any followup and I'll be looking. I'm a few days into this problem and I have gone nowhere. Rare for me and a total waste of my time. Appreciate your advice. Pat
|
|
|
|
|
Maybe check your path name again (your post has a "blank\" in the report's file name).
The "embedded resource name" depends on the namespace; it's not the same as a report's "file name / path".
|
|
|
|
|
Thanks Gerry. I removed the space. No difference. I put a in complete long hand path id. No Difference. No Errors. Datagrid is fully populated. I tried alternating between dataset and dataTable. Nothing. No errors. Just sits there blank. I almost feel angry that there is no easy way to take the data that is just sitting there in the grid and moving it into the report. This is do-able with Excel. But I have chosen not to do that in this case. I did not want to use Crystal Reports (never liked them), and now I am not sure if that will work either, but I certainly need a solution. I regularly use Code Project (since Y2K days), but this may be the first time in over 10 years that I cannot neither get nor figure out a solution. I greatly appreciate your time and expertise. I'll keep looking. Thank You. Pat
|
|
|
|
|
I'm retrieving data from using an SQLiteDataAdapater. Because one of the fields is a date, and WPF date fields won't except null values, I'm trapping the error and continuing processing. If the search entry contains a date all of the data is returned. If the search entry does not have a date (null), I'm only getting the first three fields of data.
104, 14, 0, 2014-01-15, 1, MB3,...
103, 12, 0, (null), , , ,...
Database call:
string sql = @"SELECT * FROM " + table + " WHERE " + table + "ID = " + id;
SQLiteCommand com = new SQLiteCommand(sql, conn);
dataTable = new DataTable(table);
sqliteDataAdapter = new SQLiteDataAdapter(sql, conn);
sqliteDataAdapter.FillError += new FillErrorEventHandler(FillError);
sqliteDataAdapter.Fill(dataTable);
FillError:
protected static void FillError(object sender, FillErrorEventArgs args)
{
DataRow theRow;
switch (args.DataTable.ToString())
{
case "Camera":
theRow = args.DataTable.Rows.Add(new object[] { args.Values[0], args.Values[1], args.Values[2], null, args.Values[4], args.Values[5], args.Values[6], args.Values[7] });
args.Continue = true;
return;
case "Equipment":
theRow = args.DataTable.Rows.Add(new object[] { args.Values[0], args.Values[1], args.Values[2], null, args.Values[4], args.Values[5], args.Values[6] });
args.Continue = true;
return;
case "Lens":
theRow = args.DataTable.Rows.Add(new object[] { args.Values[0], args.Values[1], args.Values[2], null, args.Values[4], args.Values[5], args.Values[6], args.Values[7], args.Values[8], args.Values[9], args.Values[10], args.Values[11] });
args.Continue = true;
return;
case "Software":
theRow = args.DataTable.Rows.Add(new object[] { args.Values[0], args.Values[1], args.Values[2], null, args.Values[4], args.Values[5], args.Values[6], args.Values[7] });
args.Continue = true;
return;
}
}
What am I doing wrong?
|
|
|
|
|
Robert Kamarowski wrote: What am I doing wrong?
Well, the most obvious thing is that you're writing code which is vulnerable to SQL Injection[^].
The ID should be passed as a parameter. Table and column names can't be passed as parameters, so you should verify that the name is one of the expected values, and cannot be modified by the user. Alternatively, since you only seem to have four tables, use a specific query for each table.
DataTable s can accept null values in columns of any type. You shouldn't get an error when you try to load a null date into a DataTable , so I'm not sure that your FillError handler is actually doing anything.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
The FillError handler is definitely working. I've walked through the code and it works. The error is happening during the Fill() method.
I don't think Injection is the problem here. The code works fine, except for when there is a date. If I run the search against SQLiteManager there are no errors. This is a self-contained application and does not go over the internet.
VS 2015
|
|
|
|
|
Robert Kamarowski wrote: I don't think Injection is the problem here
He's not saying that it is: he's giving you a serious warning that your code is wide open to accidental or deliberate damage (or deletion) of your database, and that it needs to be fixed throughout the whole of your application as a matter of extreme priority. It doesn't matter if the app is internet or local to "just your PC" - SQL injection is a real risk. Google "Bobby Tables" one day.
Your truncated data is exactly what you should get: the fill error terminates the fill operation.
I would change the DB design to not use null dates, but use the minimum sensible value instead.
Failing that, I'd use a query that didn't return null values, replacing them at the SQL end with a "sensible" default.
Once I'd fixed my code to avoid SQL Injection, of course.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Robert Kamarowski wrote: This is a self-contained application and does not go over the internet.
That's nice. Most damage to databases occurs from inside the company, not outside, for a multitude of reasons. Don't get into the habit of writing bad code because you think "nothing's going to happen". You don't know the future of your code or application and you could end up putting this code into an environment where the risks are increased.
|
|
|
|
|
Robert Kamarowski wrote: The error is happening during the Fill() method.
OK, what's the error?
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Error:
String was not recognized as a valid DateTime
|
|
|
|
|
That doesn't sound like a SQL error. It sounds more like an error from your C# code, trying to convert an invalid string value to a DateTime value.
Having said that, I don't know what SQLite will do if you pass a null or empty string to the datetime function, or if you pass in a string that's not in the correct format.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
You are storing your dates in the DB as strings as well?
That's something else you need to change. And it's going to take longer because you have existing data in there that isn't a valid datetime value.
So create a new table using DATETIME values this time, and a program to transfer each row one-by-one after they have been converted, and log the rows that fail so you can manually work out which ones you need to fix. Fix 'em, and then delete the old table, and rename the new. Then change your app to insert DateTime values directly via parameterised queries.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
The dates are stored as DATE type.
|
|
|
|
|
The date are of Date type, and NULL is allowed. However, from a previous application/language, many of the Date fields are set to an empty string, and not null. This application is under development, so I have options Is there a way to identify an empty string during the Fill() method? I haven't found anything in my online searches, so I'm hoping someone has a trick up their sleeve...
|
|
|
|
|
Is there a DATE type in SQLite now?
SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values.
And if you're not using SQLite, why are you using the SQLiteConnection , SQLiteCommand and SQLiteDataAdapter classes?
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Yes I'm using SQLite. SQLiteManager has a DATE type.
|
|
|
|
|