problem using dataRelation in dot net
-
I have been trying to solve the problem related with using dataRelation but still couldn't figure it out. I hope somebody can help me with this. I have two repeaters used one nested another. part of code is shown below:
void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
if ((item.ItemType == ListItemType.Item) ||
(item.ItemType == ListItemType.AlternatingItem))
{Repeater2 = (Repeater)e.Item.FindControl("Repeater2"); DataRowView drv = (DataRowView)item.DataItem; Repeater2.DataSource = drv.CreateChildView("categoryItem"); Repeater2.DataBind(); } }
This categoryItem is from this code:
objDA.Fill(ds);
DataColumn c1 = ds.Tables["category"].Columns["ID"];
DataColumn c2 = ds.Tables["Item"].Columns["catID"];
dRel = new DataRelation("categoryItem", c1, c2);
ds.Relations.Add(dRel);
Repeater1.DataSource = ds;
Repeater1.DataBind();And the error message is:
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 1222: objDA.Fill(ds);
Line 1223:
Line 1224: DataColumn c1 = ds.Tables["category"].Columns["ID"];
Line 1225: DataColumn c2 = ds.Tables["item"].Columns["catID"];
Line 1226: dRel = new DataRelation("categoryItem", c1, c2);Well the "ID" of table "category" is the foreign key in "item" table and that foreignKey name in the "item" table is "catID". Any help will be appreciated.. I really need some help in this.
suchita
objDA is probably null :|
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.
-
I have been trying to solve the problem related with using dataRelation but still couldn't figure it out. I hope somebody can help me with this. I have two repeaters used one nested another. part of code is shown below:
void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
if ((item.ItemType == ListItemType.Item) ||
(item.ItemType == ListItemType.AlternatingItem))
{Repeater2 = (Repeater)e.Item.FindControl("Repeater2"); DataRowView drv = (DataRowView)item.DataItem; Repeater2.DataSource = drv.CreateChildView("categoryItem"); Repeater2.DataBind(); } }
This categoryItem is from this code:
objDA.Fill(ds);
DataColumn c1 = ds.Tables["category"].Columns["ID"];
DataColumn c2 = ds.Tables["Item"].Columns["catID"];
dRel = new DataRelation("categoryItem", c1, c2);
ds.Relations.Add(dRel);
Repeater1.DataSource = ds;
Repeater1.DataBind();And the error message is:
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 1222: objDA.Fill(ds);
Line 1223:
Line 1224: DataColumn c1 = ds.Tables["category"].Columns["ID"];
Line 1225: DataColumn c2 = ds.Tables["item"].Columns["catID"];
Line 1226: dRel = new DataRelation("categoryItem", c1, c2);Well the "ID" of table "category" is the foreign key in "item" table and that foreignKey name in the "item" table is "catID". Any help will be appreciated.. I really need some help in this.
suchita
System.NullReferenceException is an exception that never lies. You are obviously typing a string in wrong. To eliminate all possible confusion, try this code:
if (!ds.Tables.Contains("category") || !ds.Tables["category"].Columns.Contains("ID"))
throw new ArgumentException("The category table or column does not exists!")
//
if (!ds.Tables.Contains("item") || !ds.Tables["item"].Columns.Contains("catID"))
throw new ArgumentException("The item table or column does not exists!")DataColumn c1 = ds.Tables["category"].Columns["ID"];Line
DataColumn c2 = ds.Tables["item"].Columns["catID"];
dRel = new DataRelation("categoryItem", c1, c2);The mind is like a parachute. It doesn’t work unless it’s open.
-
thanks for the reply again. it is showing error in line 1224 but since my ds has all the data , i dont know why the error in this line ?
suchita
Line 1224 consists of multiple statements:
Line 1224: DataColumn c1 = ds.Tables["category"].Columns["ID"];
I suggest you cut it up into multiple lines, with a breakpoint on each line. What does ds.Tables["category"] evaluate to? Does that new object have a column labeled "ID"?
SayamiSuchi wrote:
i dont know why the error in this line ?
One of those statements on that line evaluates to
null
.I are Troll :suss:
-
objDA is probably null :|
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.
-
thanks for the reply again. it is showing error in line 1224 but since my ds has all the data , i dont know why the error in this line ?
suchita
-
objDA is filling ds. ds is getting value.. isn't that means objDA has value ?? Or is there anyway to check the data inside objDA?
Thanks, suchita
I can't tell what is wrong by seeing only some part of the relevant code. if you think everything is correct, how come the exception? now replace
objDA.Fill(ds);
...by
try {
if (objDA==null) MessageBox.Show("Oh dear, objDA seems to be null");
objDA.Fill(ds);
...
} catch(Exception exc) {
MessageBox.Show("exception: "+exc.ToString());
}:|
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.
-
System.NullReferenceException is an exception that never lies. You are obviously typing a string in wrong. To eliminate all possible confusion, try this code:
if (!ds.Tables.Contains("category") || !ds.Tables["category"].Columns.Contains("ID"))
throw new ArgumentException("The category table or column does not exists!")
//
if (!ds.Tables.Contains("item") || !ds.Tables["item"].Columns.Contains("catID"))
throw new ArgumentException("The item table or column does not exists!")DataColumn c1 = ds.Tables["category"].Columns["ID"];Line
DataColumn c2 = ds.Tables["item"].Columns["catID"];
dRel = new DataRelation("categoryItem", c1, c2);The mind is like a parachute. It doesn’t work unless it’s open.
-
I can't tell what is wrong by seeing only some part of the relevant code. if you think everything is correct, how come the exception? now replace
objDA.Fill(ds);
...by
try {
if (objDA==null) MessageBox.Show("Oh dear, objDA seems to be null");
objDA.Fill(ds);
...
} catch(Exception exc) {
MessageBox.Show("exception: "+exc.ToString());
}:|
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.
Don't take it personal SayamiSuchi. Luc is not partial to any codeproject member. He gripes at all of us! :-D
The mind is like a parachute. It doesn’t work unless it’s open.
-
I can't tell what is wrong by seeing only some part of the relevant code. if you think everything is correct, how come the exception? now replace
objDA.Fill(ds);
...by
try {
if (objDA==null) MessageBox.Show("Oh dear, objDA seems to be null");
objDA.Fill(ds);
...
} catch(Exception exc) {
MessageBox.Show("exception: "+exc.ToString());
}:|
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.
-
Which one threw the exception? I agree with Eddy that you need to learn how to perform effecient debugging. Visual Studio wouldn't be worth two cents to me if it didn't have a good debugger.
The mind is like a parachute. It doesn’t work unless it’s open.
-
Which one threw the exception? I agree with Eddy that you need to learn how to perform effecient debugging. Visual Studio wouldn't be worth two cents to me if it didn't have a good debugger.
The mind is like a parachute. It doesn’t work unless it’s open.
-
-
Thank you for the reply. my code
DataColumn c1 = ds.Tables["category"].Columns["ID"];
is throwing that error. but since my dataset has values, i dont know how come that error ?
suchita
When I use a DataAdapter to fill a DataTable, I have to manually set the DataTable's name. If the same logic applies, You may need to manually set the names of your DataSet tables.
The mind is like a parachute. It doesn’t work unless it’s open.
-
Thank you for the reply. my code
DataColumn c1 = ds.Tables["category"].Columns["ID"];
is throwing that error. but since my dataset has values, i dont know how come that error ?
suchita
assuming ds is a DataSet, that line would throw a NullRefExc only if ds were null or there were no table called "category" suggestion: split the line into many, and check what gives
if (ds==null) MessageBox.Show("ds is null");
DataTable dtCat=ds.Tables["category"];
if (dtCat==null) MessageBox.Show("dtCat is null");
DataColumn c1=dtCat.Columns["ID"];
MessageBox.Show("we got a DataColumn!");:)
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.
-
When I use a DataAdapter to fill a DataTable, I have to manually set the DataTable's name. If the same logic applies, You may need to manually set the names of your DataSet tables.
The mind is like a parachute. It doesn’t work unless it’s open.
-
Don't take it personal SayamiSuchi. Luc is not partial to any codeproject member. He gripes at all of us! :-D
The mind is like a parachute. It doesn’t work unless it’s open.
You know pretty well an open mind is the numero uno prerequisite when debugging some code... :)
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.
-
ok. But since i'm using join of two tables, how i'm gonna give two tables name in there ? Or is it just whatever name I'm giving for the dataset ?
suchita
What is your SELECT query for your data adapter?
The mind is like a parachute. It doesn’t work unless it’s open.
-
What is your SELECT query for your data adapter?
The mind is like a parachute. It doesn’t work unless it’s open.
-
Which one threw the exception? I agree with Eddy that you need to learn how to perform effecient debugging. Visual Studio wouldn't be worth two cents to me if it didn't have a good debugger.
The mind is like a parachute. It doesn’t work unless it’s open.
ok now i changed them a little bit.
string query = @"select i.ID,j.catID,j.item from category i, item j where i.ID = j.catID"; SqlCommand objCmd = new SqlCommand(query, cnx); SqlDataAdapter objDA = new SqlDataAdapter(objCmd); DataSet ds = new DataSet(); objDA.Fill(ds,"category"); objDA.Fill(ds, "item"); DataColumn c2 = ds.Tables\["category"\].Columns\["ID"\]; DataColumn c1 = ds.Tables\["item"\].Columns\["catID"\]; dRel = new DataRelation("category\_Item", c1, c2); ds.Relations.Add(dRel);
And here ID is the unique key for category and catID is the foreign key . But it throws error like:
These columns don't currently have unique values.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.Exception Details: System.ArgumentException: These columns don't currently have unique values.
Source Error:
Line 1231:
Line 1232: dRel = new DataRelation("category_Item", c1, c2);
Line 1233: ds.Relations.Add(dRel);
Line 1234: Repeater1.DataSource = ds;
Line 1235: Repeater1.DataBind();But in ID is the unique key in category table and i have unique ID in item table too. I tried replacing catID by ID for the item table but in both the cases, error is same.
suchita
-
I have been trying to solve the problem related with using dataRelation but still couldn't figure it out. I hope somebody can help me with this. I have two repeaters used one nested another. part of code is shown below:
void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
if ((item.ItemType == ListItemType.Item) ||
(item.ItemType == ListItemType.AlternatingItem))
{Repeater2 = (Repeater)e.Item.FindControl("Repeater2"); DataRowView drv = (DataRowView)item.DataItem; Repeater2.DataSource = drv.CreateChildView("categoryItem"); Repeater2.DataBind(); } }
This categoryItem is from this code:
objDA.Fill(ds);
DataColumn c1 = ds.Tables["category"].Columns["ID"];
DataColumn c2 = ds.Tables["Item"].Columns["catID"];
dRel = new DataRelation("categoryItem", c1, c2);
ds.Relations.Add(dRel);
Repeater1.DataSource = ds;
Repeater1.DataBind();And the error message is:
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 1222: objDA.Fill(ds);
Line 1223:
Line 1224: DataColumn c1 = ds.Tables["category"].Columns["ID"];
Line 1225: DataColumn c2 = ds.Tables["item"].Columns["catID"];
Line 1226: dRel = new DataRelation("categoryItem", c1, c2);Well the "ID" of table "category" is the foreign key in "item" table and that foreignKey name in the "item" table is "catID". Any help will be appreciated.. I really need some help in this.
suchita