Showing posts with label datatable. Show all posts
Showing posts with label datatable. Show all posts

Thursday, March 29, 2012

Newbie : Gridview question

Hi all,
I have a gridview on my page and templatecolumns defined in it. I also have
a couple of databound columns. The datatable being bound to the gridview
contains a column (defined as a datacolumn so as to get the value) and in
the ItemDataBound I can access this value but only when the databound
column's visibility is set to true. If I hide the visibility at design-time
I can't get access to the value at run-time. I don't want to show this
column.
How do I go about geting the value so as to do someting with it but not show
the databound column?
Regards
John.Hi John,
You can put these values in DataKeyNames, and retrieve by
.DataKeys[row_index].Values[col_index]
HTH
Elton Wang
"John" wrote:

> Hi all,
> I have a gridview on my page and templatecolumns defined in it. I also hav
e
> a couple of databound columns. The datatable being bound to the gridview
> contains a column (defined as a datacolumn so as to get the value) and in
> the ItemDataBound I can access this value but only when the databound
> column's visibility is set to true. If I hide the visibility at design-tim
e
> I can't get access to the value at run-time. I don't want to show this
> column.
> How do I go about geting the value so as to do someting with it but not sh
ow
> the databound column?
> Regards
> John.
>
>

Newbie : Gridview question

Hi all,

I have a gridview on my page and templatecolumns defined in it. I also have
a couple of databound columns. The datatable being bound to the gridview
contains a column (defined as a datacolumn so as to get the value) and in
the ItemDataBound I can access this value but only when the databound
column's visibility is set to true. If I hide the visibility at design-time
I can't get access to the value at run-time. I don't want to show this
column.

How do I go about geting the value so as to do someting with it but not show
the databound column?

Regards
John.Hi John,

You can put these values in DataKeyNames, and retrieve by

..DataKeys[row_index].Values[col_index]

HTH

Elton Wang

"John" wrote:

> Hi all,
> I have a gridview on my page and templatecolumns defined in it. I also have
> a couple of databound columns. The datatable being bound to the gridview
> contains a column (defined as a datacolumn so as to get the value) and in
> the ItemDataBound I can access this value but only when the databound
> column's visibility is set to true. If I hide the visibility at design-time
> I can't get access to the value at run-time. I don't want to show this
> column.
> How do I go about geting the value so as to do someting with it but not show
> the databound column?
> Regards
> John.
>

Monday, March 26, 2012

Newbie DataTable question

Stupid question for the day,

Just playing around with rewriting my website in .Net, I want to add a
record to my database table, in the old ADO, it was simple you could
create a connection and recordset and then rs.AddNew etc... in .Net it
seems they recommend that you populate a DataTable then use the
NewRow method

Isnt this bringing back a entire copy of the table (in this case 40,000
users), if so isn't this very inefficient? I know you can run a
insert via a ExecuteNonQuery which is the way I have done it in the
past (usually passing parameters to stored procs)

But I would have thought you should be able to add a row (Datarow) in
this case to a table without returning the entire table when you
connect to it.

Probably being very stupid

heres my code

try
{
// Initializations
string database = "MyDB.mdb";
string connectionString =
@dotnet.itags.org."Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Z:\Web\Database\" +
database;

//connection
OleDbConnection cnn = new OleDbConnection();
cnn.ConnectionString = connectionString;
cnn.Open();

OleDbCommand com = cnn.CreateCommand();
com.CommandText = "Select * from tblUser";

OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = com;

//DataSet ds = new DataSet();
//da.Fill(ds, "Users");

DataTable dt = new DataTable();
da.Fill(dt);

//DataRow dr = dt.Rows[0];
DataRow dr = dt.NewRow();

dr["FirstName"] = FirstName.ToString();
dr["Surname"] = Surname.ToString();
dr["Email"] = Email.ToString();

dt.Rows.Add(dr);
da.Update(dt);

//close up

cnn.Close();
}
catch (OleDbException ee)
{
Console.WriteLine(ee.ToString());
}the notion of in-memory datasets, is you only keep a copy of what you need.
the premise is that normally you only need a subset of the data. a dataset
keeps track of the status of a row (new, modified,deleted,unchanged). then
the adapter can look at the row status to determine whether to insert,
delete, update, or do nothing.

in your case you are loading the dataset solely to get the structure. you
could use the folowwing statement.

com.CommandText = "Select * from tblUser where 1 = 0";

which would only return column info and no data. a better approach is to use
typed datasets. here you use a wizard to build a dataset class that initials
the table and column info. this removes the requirement to do a dummy
database select. also you get a dot notion for accessing column data.

-- bruce (sqlwork.com)

"Ben" <BenScott@.aemail4u.com> wrote in message
news:1151423636.132121.107680@.75g2000cwc.googlegro ups.com...
> Stupid question for the day,
>
> Just playing around with rewriting my website in .Net, I want to add a
> record to my database table, in the old ADO, it was simple you could
> create a connection and recordset and then rs.AddNew etc... in .Net it
> seems they recommend that you populate a DataTable then use the
> NewRow method
>
> Isnt this bringing back a entire copy of the table (in this case 40,000
> users), if so isn't this very inefficient? I know you can run a
> insert via a ExecuteNonQuery which is the way I have done it in the
> past (usually passing parameters to stored procs)
>
> But I would have thought you should be able to add a row (Datarow) in
> this case to a table without returning the entire table when you
> connect to it.
>
> Probably being very stupid
> heres my code
> try
> {
> // Initializations
> string database = "MyDB.mdb";
> string connectionString =
> @."Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Z:\Web\Database\" +
> database;
> //connection
> OleDbConnection cnn = new OleDbConnection();
> cnn.ConnectionString = connectionString;
> cnn.Open();
> OleDbCommand com = cnn.CreateCommand();
> com.CommandText = "Select * from tblUser";
> OleDbDataAdapter da = new OleDbDataAdapter();
> da.SelectCommand = com;
> //DataSet ds = new DataSet();
> //da.Fill(ds, "Users");
> DataTable dt = new DataTable();
> da.Fill(dt);
> //DataRow dr = dt.Rows[0];
> DataRow dr = dt.NewRow();
> dr["FirstName"] = FirstName.ToString();
> dr["Surname"] = Surname.ToString();
> dr["Email"] = Email.ToString();
> dt.Rows.Add(dr);
> da.Update(dt);
> //close up
> cnn.Close();
> }
> catch (OleDbException ee)
> {
> Console.WriteLine(ee.ToString());
> }
thanks Bruce,

yeah as you where writing i had tried that, bit quicker, but then it
wont allow me to insert data

"Update requires a valid InsertCommand when passed DataRow collection
with new rows."

so i guess i need to change

da.SelectCommand = com;

to

da.InsertCommand = com;

that doesnt work :(. any more words of wisdom? the main reason i am
doing this is to avoid having to handle what data is being put into
each field when the users submit the data. creating a Insert string
seem to me the wrong way to do this.

Newbie DataTable question

Stupid question for the day,
Just playing around with rewriting my website in .Net, I want to add a
record to my database table, in the old ADO, it was simple you could
create a connection and recordset and then rs.AddNew etc... in .Net it
seems they recommend that you populate a DataTable then use the
NewRow method
Isnt this bringing back a entire copy of the table (in this case 40,000
users), if so isn't this very inefficient? I know you can run a
insert via a ExecuteNonQuery which is the way I have done it in the
past (usually passing parameters to stored procs)
But I would have thought you should be able to add a row (Datarow) in
this case to a table without returning the entire table when you
connect to it.
Probably being very stupid
heres my code
try
{
// Initializations
string database = "MyDB.mdb";
string connectionString =
@dotnet.itags.org."Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Z:\Web\Database\" +
database;
//connection
OleDbConnection cnn = new OleDbConnection();
cnn.ConnectionString = connectionString;
cnn.Open();
OleDbCommand com = cnn.CreateCommand();
com.CommandText = "Select * from tblUser";
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = com;
//DataSet ds = new DataSet();
//da.Fill(ds, "Users");
DataTable dt = new DataTable();
da.Fill(dt);
//DataRow dr = dt.Rows[0];
DataRow dr = dt.NewRow();
dr["FirstName"] = FirstName.ToString();
dr["Surname"] = Surname.ToString();
dr["Email"] = Email.ToString();
dt.Rows.Add(dr);
da.Update(dt);
//close up
cnn.Close();
}
catch (OleDbException ee)
{
Console.WriteLine(ee.ToString());
}the notion of in-memory datasets, is you only keep a copy of what you need.
the premise is that normally you only need a subset of the data. a dataset
keeps track of the status of a row (new, modified,deleted,unchanged). then
the adapter can look at the row status to determine whether to insert,
delete, update, or do nothing.
in your case you are loading the dataset solely to get the structure. you
could use the folowwing statement.
com.CommandText = "Select * from tblUser where 1 = 0";
which would only return column info and no data. a better approach is to use
typed datasets. here you use a wizard to build a dataset class that initials
the table and column info. this removes the requirement to do a dummy
database select. also you get a dot notion for accessing column data.
-- bruce (sqlwork.com)
"Ben" <BenScott@.aemail4u.com> wrote in message
news:1151423636.132121.107680@.75g2000cwc.googlegroups.com...
> Stupid question for the day,
>
> Just playing around with rewriting my website in .Net, I want to add a
> record to my database table, in the old ADO, it was simple you could
> create a connection and recordset and then rs.AddNew etc... in .Net it
> seems they recommend that you populate a DataTable then use the
> NewRow method
>
> Isnt this bringing back a entire copy of the table (in this case 40,000
> users), if so isn't this very inefficient? I know you can run a
> insert via a ExecuteNonQuery which is the way I have done it in the
> past (usually passing parameters to stored procs)
>
> But I would have thought you should be able to add a row (Datarow) in
> this case to a table without returning the entire table when you
> connect to it.
>
> Probably being very stupid
> heres my code
> try
> {
> // Initializations
> string database = "MyDB.mdb";
> string connectionString =
> @."Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Z:\Web\Database\" +
> database;
> //connection
> OleDbConnection cnn = new OleDbConnection();
> cnn.ConnectionString = connectionString;
> cnn.Open();
> OleDbCommand com = cnn.CreateCommand();
> com.CommandText = "Select * from tblUser";
> OleDbDataAdapter da = new OleDbDataAdapter();
> da.SelectCommand = com;
> //DataSet ds = new DataSet();
> //da.Fill(ds, "Users");
> DataTable dt = new DataTable();
> da.Fill(dt);
> //DataRow dr = dt.Rows[0];
> DataRow dr = dt.NewRow();
> dr["FirstName"] = FirstName.ToString();
> dr["Surname"] = Surname.ToString();
> dr["Email"] = Email.ToString();
> dt.Rows.Add(dr);
> da.Update(dt);
> //close up
> cnn.Close();
> }
> catch (OleDbException ee)
> {
> Console.WriteLine(ee.ToString());
> }
>
thanks Bruce,
yeah as you where writing i had tried that, bit quicker, but then it
wont allow me to insert data
"Update requires a valid InsertCommand when passed DataRow collection
with new rows."
so i guess i need to change
da.SelectCommand = com;
to
da.InsertCommand = com;
that doesnt work :(. any more words of wisdom? the main reason i am
doing this is to avoid having to handle what data is being put into
each field when the users submit the data. creating a Insert string
seem to me the wrong way to do this.

Saturday, March 24, 2012

newbie DropDownList inside a GridView cell question

Using ASP.NET 2.0, I need to a DropDownList in a GridView cell that is bound
to a DataTable Row element that contains a foriegn key in the data record.
For the DropDownList items, I need data from the primary key in another
table. It almost looks like the DropDownList needs binding to two separate
tables. Is that possible? If so, can someone tell me which DropDownList
property references the foreign key table and which one references the
primary key table?

Thanks,

KeithLook at the source code of this demo:
http://www.webswapp.com/codesamples...s/gridview.aspx
--
HTH,
Phillip Williams
http://www.societopia.net
http://www.webswapp.com

"keithb" wrote:

> Using ASP.NET 2.0, I need to a DropDownList in a GridView cell that is bound
> to a DataTable Row element that contains a foriegn key in the data record.
> For the DropDownList items, I need data from the primary key in another
> table. It almost looks like the DropDownList needs binding to two separate
> tables. Is that possible? If so, can someone tell me which DropDownList
> property references the foreign key table and which one references the
> primary key table?
> Thanks,
> Keith
>

newbie DropDownList inside a GridView cell question

Using ASP.NET 2.0, I need to a DropDownList in a GridView cell that is bound
to a DataTable Row element that contains a foriegn key in the data record.
For the DropDownList items, I need data from the primary key in another
table. It almost looks like the DropDownList needs binding to two separate
tables. Is that possible? If so, can someone tell me which DropDownList
property references the foreign key table and which one references the
primary key table?
Thanks,
KeithLook at the source code of this demo:
http://www.webswapp.com/codesamples...s/gridview.aspx
--
HTH,
Phillip Williams
http://www.societopia.net
http://www.webswapp.com
"keithb" wrote:

> Using ASP.NET 2.0, I need to a DropDownList in a GridView cell that is bou
nd
> to a DataTable Row element that contains a foriegn key in the data record.
> For the DropDownList items, I need data from the primary key in another
> table. It almost looks like the DropDownList needs binding to two separate
> tables. Is that possible? If so, can someone tell me which DropDownList
> property references the foreign key table and which one references the
> primary key table?
> Thanks,
> Keith
>
>