How to cast/convert a datatablecolumn to string ?


How to cast/convert a datatablecolumn  to string ?

["import_policeid"]is a typeof integer

parentView.Table.Columns["import_policeid"].Expression = "Convert(["import_policeid"],System.String)";

throws this exception
Property Expression can not be used , because there is a cirkular reference in the expression

Thanks
LVL 18
vbturboAsked:
Who is Participating?
 
MogalManicConnect With a Mentor Commented:
If you actually want to use the like operator you can use the Convert function inside the filter like this:
  objDs.RowFilter = "Convert(import_policeid, 'System.String')  Like '%" & txtsearch.Text & "%'"

which will return rows that "contain" the value of txtsearch.Text.  For example if import_policeid datavalues were
  100
  200
  205
  304
  0
  2
and txtsearch.text was "2" then the result set would be
  200
  205
  2
0
 
bungHocCommented:
Table.Columns["Import_policeID"].ToString() should do the job.
0
 
MogalManicCommented:
Another way to do it is to use the Convert class.  It is a class that contains static methods that will convert any object to the requested type (it throws an exception if the type is incompatible, i.e. convert int to date).

So to convert 'import_policeid' to string you would do this:
   string strImportPoliceId=Convert.ToString(parentView.Table.Rows[rowNum]["import_policeid"]);
0
Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

 
vbturboAuthor Commented:
MogalManic:

The reason i want convert the ["import_policeid"] to string is that i need to apply a row filter on a column which datatype is integer.

.RowFilter = "import_policeid Like '%" & txtsearch.Text & "%'"

and i cannot use the LIKE operator on a column that is type of int.

bungHoc:

Your line states that " Value type of string cannot be converted to a dataview
0
 
bungHocCommented:
Okay.. thought you just need to convert the entire column to string. But if what you needed is to convert it then import back to DataTable that line won't work.

From top of my head, this is the way to set DataColumn's datatype:
Table.Columns["Import_PoliceID"].DataType = System.Type.GetType("System.String");

If it doesn't work let me know, get back to you in a couple of hours when I get back to my workstation with a running C#.
0
 
vbturboAuthor Commented:
bungHoc:

It Throws the following exception:
Datatype for a column can not be altered when the column contains data.

at the middle of this page it shows how to convert a datatable column

but where am i dropping the ball ?

https://msdn2.microsoft.com/en-us/library/system.data.datacolumn.expression(VS.71).aspx

The following functions are also supported:

CONVERT

Description Converts given expression to a specified .NET Framework Type.
Syntax Convert(expression, type)
Arguments expression-- The expression to convert.
type-- The .NET Framework type to which the value will be converted.
 

Example: myDataColumn.Expression="Convert(total, 'System.Int32')"

Thanks
0
 
j-w-thomasCommented:
Hi vbturbo,

I am sure that you have already thought of this, but if the column is an integer value and you want to filter by number, can you use greater than or less than:

objDS.RowFilter = "import_policeid > 50"

I have not tried this, so I may be out-to-lunch

John
0
 
vbturboAuthor Commented:
MogalManic:

That did it

Thanks to all for colaborating
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.