|
Try casting it to a C# string from a lpcstr
|
|
|
|
|
Use StringBuilder from the System.Text namespace.
[DllImport("kernel32.dll")]
static extern bool GetVolumeNameForVolumeMountPoint(string lpszVolumeMountPoint, [Out] StringBuilder lpszVolumeName, uint cchBufferLength);
public static string GetVolumeName(string MountPoint)
{
StringBuilder sb = new StringBuilder();
GetVolumeNameForVolumeMountPoint(MountPoint, sb, 100);
return sb.ToString();
}
|
|
|
|
|
I tried a StringBuilder but I got empty strings back. I think it has to do with the LPARAM parameter needing to be LPCSTR type pointer and StringBuilder is in appropriate.
What I am trying to do is use the SendMessage API to get the textline in an edit control with EM_GETLINE. The LPARAM parameter in this case is an LPCSTR pointer to a buffer of characters and I just don't know how to allocate the memory for this to happen correctly.
Thanks,
Eric
|
|
|
|
|
I recently recieved a snipit of code from a friend that contained a character I was unfamiliar with and in fact that my conversion tool was unfamiliar with as well.
The code contained a charcter of pipes (||) used to represent an "OR" argument. The original code was written in VB.
Can someone tell me the equivilent of || for the "OR" argument in C#?
Here is the line of code:
<br />
sub void Customers1_ItemDataBound(Object sender, RepeaterItemEvenArgs e) <br />
{ <br />
<br />
if (e.Item.ItemType = ListItemType.Item) || (e.Item.ItemType = ListItemType.AlternatingItem) <br />
<br />
{ <br />
Repeater oRpt = (Repeater) e.Item.FindControl("Customers2") <br />
DataRowView oDrv = e.Item.DataItem <br />
<br />
'Bind item repeater <br />
//This line is to retrieve only the records in the CTPT table that have the same ItemID as the HSCTI record in the current row <br />
oRpt.DataSource = oDrv.CreateChildView("ItemID") <br />
oRpt.DataBind <br />
end if <br />
} <br />
<br />
//Similarly, to show all the related comments on the Customers2 repeater, you include code in the Customers2_ItemDataBound() event <br />
sub void Customers2_ItemDataBound(Object sender, RepeaterItemEvenArgs e) <br />
{ <br />
<br />
//NOTICE: and this line of code as well <br />
if (e.Item.ItemType = ListItemType.Item) || (e.Item.ItemType = ListItemType.AlternatingItem) <br />
<br />
<br />
{ <br />
//This is to look for the Customers3 repeater that is nested inside the Customers2 repeater <br />
Repeater oRpt = (Repeater) e.Item.FindControl("Customers3") <br />
DataRowView oDrv = e.Item.DataItem <br />
<br />
'Bind item repeater <br />
oRpt.DataSource = oDrv.CreateChildView("ct_number") <br />
oRpt.DataBind <br />
end if <br />
} <br />
Thank you for your help.
Sincerely,
Tim
|
|
|
|
|
The equivalent for || in C# is ||.
The problem you have is that the syntax of the if statement is wrong. The syntax should look like this:
if (expression) { ... }
What you have is:
if expression { ... }
Put a parenthesis around the expression, and you will get further.
---
b { font-weight: normal; }
|
|
|
|
|
Guffa,
Thanks so much for the pointer. I can't believe I didn't see that. What I did was to immediately put the code into the converter to get a first pass at it in C# when it failed on the pipes[||].
Thank you again.
Tim
|
|
|
|
|
TMF320 wrote:
Thanks so much for the pointer. I can't believe I didn't see that.
Don't feel bad, I did the same thing repeatedly while porting an algorithm from vba to c#.
|
|
|
|
|
This should be RepeaterItemEventArgs and is found in the System.Web.UI.WebControls namespace. This is in the file System.Web.dll.
If you're making a ASP.NET application, this reference is set for you automatically when you create the new web app.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
-- modified at 14:39 Thursday 26th January, 2006
|
|
|
|
|
Guffa,
In continuing with my conversion, could you tell me what the assembly reference for RepeaterItemEvenArgs is?
I get an error on this line:
public void Customers1_ItemDataBound(Object sender, RepeaterItemEvenArgs e)
Thanks again.
Tim
|
|
|
|
|
Ignore this. Typo!
RepeaterItemEventArgs not RepeaterItemEvenArgs.
Click... Shoot....
|
|
|
|
|
|
James,
Thank you also for your reply!
I wanted to know if you could help me through this error? THe following error is generating the following error:
'System.Web.UI.WebControls.ListItemType' is a 'type' but is used like a 'variable'
The code in question:
<br />
<small><br />
public void Customers1_ItemDataBound(Object sender, RepeaterItemEventArgs e) <br />
{<br />
if((e.Item.ItemType = ListItemType)||(e.Item.ItemType = ListItemType.AlternatingItem))<br />
{<br />
Repeater oRPT = (Repeater)e.Item.FindControl("Customer2");<br />
DataRowView oDrv = e.Item.DataItem;<br />
oRPT.DataSource = oDrv.CreateChildView("ItemID");<br />
oRPT.DataBind();<br />
}<br />
}<br />
<br />
public void Customers2_ItemDataBound(Object sender, RepeaterItemEventArgs e)<br />
{<br />
if ((e.Item.ItemType = ListItemType) || (e.Item.ItemType = ListItemType.AlternatingItem))<br />
{<br />
Repeater oRPT = (Repeater)e.Item.FindControl("Customer3");<br />
DataRowView oDrv = e.Item.DataItem;<br />
oRPT.DataSource = oDrv.CreateChildView("ct_number");<br />
oRPT.DataBind();<br />
}<br />
}<br />
</small><br />
Thank you for your help.
Sincerely,
Tim
|
|
|
|
|
The error says that you are using a type as an instance (ie trying to assign values to a CLASS not an INSTANCE of it). Basically, just change the "=" in the if loops to a "=="
This may have been a simple typing mistake (happens to me all the time lol) but just in case:
"=" is the assignment operator, it assigns the value at the right hand side to that on the left.
"==" is a logical operator which tests if the two values are equal (ie if(MyAge == FilmAge))
Hope that helps
|
|
|
|
|
James,
To be honest it was no typing error (just inexperience). I appreciate your additional explaination. It helps me to learn.
UNfortunately though, I am still getting the error. Could there be another reason for this occurance?
Thank you again for your time.
Tim
|
|
|
|
|
James,
What I was able to discover was that if I followed intellisense and used Item instead of LinkItem I was able to get by the error:
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
This however, produced another error which I haven't been able to get by:
Cannot implicitly convert type 'object' to 'System.Data.DataRowView'. An explicit conversion exists (are you missing a cast?)
This is referencing line:
DataRowView oDrv = e.Item.DataItem;
From the following code:
<br />
<small><br />
public void Customers1_ItemDataBound(Object sender, RepeaterItemEventArgs e) <br />
{<br />
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) <br />
{<br />
Repeater oRPT = (Repeater)e.Item.FindControl("Customer2");<br />
DataRowView oDrv = e.Item.DataItem;<br />
oRPT.DataSource = oDrv.CreateChildView("ItemID");<br />
oRPT.DataBind();<br />
}<br />
}<br />
<br />
public void Customers2_ItemDataBound(Object sender, RepeaterItemEventArgs e)<br />
{<br />
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) <br />
{<br />
Repeater oRPT = (Repeater)e.Item.FindControl("Customer3");<br />
DataRowView oDrv = e.Item.DataItem;<br />
oRPT.DataSource = oDrv.CreateChildView("ct_number");<br />
oRPT.DataBind();<br />
}<br />
}<br />
</small><br />
Do you have any thoughts on this?
Thank you for your help. Trying to meet a deadline by morning. Will be here all night if necessary.
Regards,
Tim
|
|
|
|
|
DataRowView oDrv = (System.Data.DataRowView)(e.Item.DataItem);
|
|
|
|
|
Dan,
Thank you very much for your post. You got me past the error!!!
However, although I don't get any errors I still cannot see the nested data within the repeaters.
Some history:
I am attemtping to produce a Repeater that contains 2 nested repeaters that display child data to the parent of the previous. Like this:
Customer Information:
Call Tracking Incident
Comments for each CTI
So the last two repeaters will repeat for as many parent records there are in the parent.
Does this make sense?
It seems that developing single or two tier gridviews or repeaters is not a problem but when you want to expand to mulit-tier repeaters, there is little information on it.
If you have some time could you work me through this? The application is small and probably a sinch for you to troubleshoot.
I don't want to impose on you (but I'm desperate at this point).
If you could give me a few minutes I could post the code.
Sincerely,
Tim
|
|
|
|
|
TMF, if your still on im up for another few hours - my MSN is jamespraveen@aol.com - just add me and we'll talk if you still have any problems
|
|
|
|
|
James,
In the case that you haven't checked email in a bit, I sent you some information concerning the application that might help in diagnosing the problem.
Thank you again for all your help.
Tim
|
|
|
|
|
James,
I didn't hear back from you yesterday after sending the code. Hope all is well.
If you get a chance to look the code I sent today I made a change in it that you'll need to know about.
See below:
The change deals with the pointer to the actual realtionship name instead of the table ID:
From: oRPT.DataSource = oDrv.CreateChildView("ItemID");
To: oRPT.DataSource = oDrv.CreateChildView("HSCTI1");
Unfortunately, I still do not get the child view.
<br />
<small><br />
public void Customers1_ItemDataBound(Object sender, RepeaterItemEventArgs e) <br />
{<br />
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) <br />
{<br />
Repeater oRPT = (Repeater)e.Item.FindControl("Customer2");<br />
DataRowView oDrv = (System.Data.DataRowView)(e.Item.DataItem);<br />
oRPT.DataSource = oDrv.CreateChildView("HSCTI1");<br />
oRPT.DataBind();<br />
}<br />
}<br />
<br />
public void Customers2_ItemDataBound(Object sender, RepeaterItemEventArgs e)<br />
{<br />
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) <br />
{<br />
Repeater oRPT = (Repeater)e.Item.FindControl("Customer3");<br />
DataRowView oDrv = (System.Data.DataRowView)(e.Item.DataItem);<br />
oRPT.DataSource = oDrv.CreateChildView("CTPT1");<br />
oRPT.DataBind();<br />
}<br />
}<br />
</small><br />
Please let me know if you have any suggestions.
Sincerely,
Tim
|
|
|
|
|
Well, i'm quite new to C#, but i wanna learn. So, i've decided to make a program, but i have some dificulties in finding a label that can be set to transparent(only the label, through a transparency key).
The idea is that i have a large picture in the form and that i want to put some labels(or buttons or anything else which has some writing in front and the option to click on it... and, of course can be set to transparent) on the picture so that when you click it, it shows a messagebox.
The basic idea is that i need an object that can stay on top of a picture and be transparent.
p.s.: the idea with cutting the the picture in small sizes which can be set as background won't work because there are many labels...
thank u!
|
|
|
|
|
Only forms can have an opacity key but you can set the label to get its color from an ARGB (Alpha Red Green Blue) value.
|
|
|
|
|
Thanks... I've found an overriden control that does that. And i think it's what i was looking for... Thanks, anyway -> the project name si simple line...
|
|
|
|
|
C# newbie has a simple C# question here:
suppose I have a list in PhotoManager.cs class under /App_Code. In photos.aspx.cs I want to call one item from the list data such as string skname, what should I do? I know if you use dataset you will have something like this: dsCategory.Tables(0).Rows(0).Item("skname") but I don't know how to do it with List. I googled for a while still no luck. BTW, the GetCategory method returns single row of data.
public static List<getcat> GetCategory(){
.....................................
GetCat temp = new GetCat(
(int)reader["skid"],
(string)reader["skname"]);
list.Add(temp);
................
}
I am thinking something like this
string strTemp = PhotoManager.GetCategory.Item("skname")
Obviously this has syntax error. any input is appreciated. thanks a lot in advance!
|
|
|
|
|
I have created my own user control by subclassing UserControl. In the layout of the user control is a standard Button. The Button has its own Click event. How to I programatically raise the Click event of the UserControl when the Button inside is clicked?
Thanks,
Mark
|
|
|
|