|
Hi,
When i type any value in a cell of a DataGridView a new row is added automatically in the DataGridView, but if i select any value from a combobox, in some case a new row is generated, but not in some cases.
I need to generate a blank row when i click on any cell of the last row.
Thankyou
YPKI
|
|
|
|
|
What you are running across is the limitation and inconsistency of editing in a list control (DGV). Most developers will not supply inline editing unless it is for a trivial set of data (1 cell only).
What I suggest you do is pop a dialog when the user double clicks (for edit) or clicks an add button. In the dialog you have complete control of the data. When the user has completed editing and closes the form then reload the list control and select the edited item.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
hi! everyone!!
I am using Windows application. I want to get single,single value from listview(contains two column) when I click a row.
my 1st column name is 'code'and value is '123' and second column name 'desc' value 'good'
If i click its return value but gives this type of value:
listview1:{123}
code sample:
private void listView1_Click(object sender, EventArgs e)
{
ListViewItem value1 = (ListViewItem)listView1.Items[0];
string val =Convert.ToString(value1);
}
please guide me,
thanx and regards
|
|
|
|
|
ListViewItem item = listView1.Items[0]
string val = item.Text;
string desc = item.SubItems[0].Text
|
|
|
|
|
thanx sir!
but i get only code value not desc value. in desc value also contain the code value.
I ask one more question.
actually when i click one row its work properly. but when i click secong row it returns also previous value instead of current selected row.
please guide me what can i do when i select different rows the selected rows returns value
thans and best regards
|
|
|
|
|
Phil pointed you to another ListView property: SubItems, which is indexable.
Did you read up on it? did you perform a little experiment?
BTW: when you know a column isn't text (say a number), and you want its value, then don't use Convert or ToString(), just cast!
|
|
|
|
|
hey you can use given code to get value based on row on which you click.
string txt = listView1.Items[listView1.FocusedItem.Index].SubItems[0].Text;
if you need value of both second column you have to change value of SubItems to column index as
string txt1 = listView1.Items[listView1.FocusedItem.Index].SubItems[0].Text;
string txt2 = listView1.Items[listView1.FocusedItem.Index].SubItems[1].Text;
you can also use loop with SubItems for getting value..
|
|
|
|
|
thank you very much!
you have solved my problem.
|
|
|
|
|
Hi,,
I have a Code in VB. Pls Convert this to c# using DeveloperFusion Website.
textbox1.Text = trim(listview.SelectedItems(0).SubItems(1).Text)
regards,
Saran..t
|
|
|
|
|
saransaki08 wrote: I have a Code in VB. Pls Convert this to c# using DeveloperFusion Website.
I am not getting it properly I think your question is not clear. will you elaborate it for better understand for me or others.
|
|
|
|
|
hi,
is there any free open source multi level nested grid developed using c# for windows and web apps . i need a grid which can display parent child relation ship at nth level with plus minus sign. if is available then please give me the url.
thanks in advance.
tbhattacharjee
|
|
|
|
|
There is a similar thing i have written for Web.
Group GridView Data[^]
Please check if it could help you. (But it support only 1 level of grouping at a time.)
|
|
|
|
|
Google for a drill-down grid. I doubt that there'll be a free version that can be used (with a consistent look) in both web & forms though.
I are Troll
|
|
|
|
|
Have a look
http://help.syncfusion.com/ug_84/User%20Interface/Silverlight/Grid/default.htm?turl=Documents/nestedgridforgriddatacontrol.htm
http://www.codeproject.com/KB/aspnet/MultiNestMDGridview.aspx
http://geekswithblogs.net/AzamSharp/archive/2007/12/25/117986.aspx
http://www.codeguru.com/csharp/.net/net_data/datagrid/article.php/c10947
|
|
|
|
|
If you're going to use it in web apps, then, try jqGrid for asp.net.
|
|
|
|
|
|
Here is the obvious way (just an example):
byte[] arrARGBValues = { 255, 255, 0, 0, 255, 255, 0, 0, 255, 150, 255, 255 };
int lengthARGBValues = arrARGBValues.Length;
int lengthSubArrays = lengthARGBValues / 4;
byte[] arrAValues = new byte[lengthSubArrays];
byte[] arrRValues = new byte[lengthSubArrays];
byte[] arrGValues = new byte[lengthSubArrays];
byte[] arrBValues = new byte[lengthSubArrays];
for (int i = 0, j = 0; j < lengthSubArrays; i += 4, j++)
{
arrAValues[j] = arrARGBValues[i];
arrRValues[j] = arrARGBValues[i + 1];
arrGValues[j] = arrARGBValues[i + 2];
arrBValues[j] = arrARGBValues[i + 3];
}
|
|
|
|
|
when you have an array (or any other collection) of colors, you can manipulate them directly. There is no need to first display them (i.e. their string representation) in a ListBox and then parse those strings, that approach is so wrong.
Here is an example of what one can do, without ListBox, without parsing text:
Color[] colors=new Color[3];
colors[0]=Color.Yellow;
colors[1]=Color.Red;
colors[2]=myImage.GetPixel(0,0);
or
List<Color> colors=new List<Color>();
colors.Add(Color.Yellow);
colors.Add(Color.Red);
colors.Add(myImage.GetPixel(0,0));
...
then
int sumRed=0;
int count=0;
foreach (Color color in colors) {
sumRed+=color.R;
count++;
}
int averageRed=sumRed/count;
see? no ListBox, no strings, no problems. Also less code, and much faster.
|
|
|
|
|
oh because my array consist of many entries made up of A, R, G, B. i dont think i can make use of your methods as listed above.
|
|
|
|
|
pancakeleh wrote: my array consist of many entries made up of A, R, G, B
and that is completely silly, why would you mix up things that you later on need separately?
|
|
|
|
|
in the first place, it is mixed up. tts why i would wanna separate it.
|
|
|
|
|
If you are using C# 4 you can do it like this:
string[] argbArray = new string[] { "A=255", "R=255", "G=0", "B=0", "A=255", "R=0", "G=255", "B=0" };
string[] rArray = argbArray.Where(s => s.StartsWith("R=")).ToArray();
string[] gArray = argbArray.Where(s => s.StartsWith("G=")).ToArray();
string[] bArray = argbArray.Where(s => s.StartsWith("B=")).ToArray();
int[] argbintArray = new int[] { 255, 255, 0, 0, 255, 0, 255, 0 };
int[] rintArray = Enumerable.Range(0, argbintArray.Length).Where(i => i % 4 == 1).Select(i => argbintArray[i]).ToArray();
int[] gintArray = Enumerable.Range(0, argbintArray.Length).Where(i => i % 4 == 2).Select(i => argbintArray[i]).ToArray();
int[] bintArray = Enumerable.Range(0, argbintArray.Length).Where(i => i % 4 == 3).Select(i => argbintArray[i]).ToArray();
|
|
|
|
|
am i still able to do this if my array has got 400 entries?
|
|
|
|
|
Either method will work with any sized array...
The first method iterates over each entry in the souce array and pulls out values that start with whatever we are looking for ie "R=" and puts them into a new array.
The second method works like this:
Create an array of integers that represent the indexes in the source array Enumerable.Range(0, argbintArray.Length)
In groups of 4 select every seconds index .Where(i => i % 4 == 1)
Select the items out of the source array at the identified indexes .Select(i => argbintArray[i])
Hopefully that makes sense. Try outputing the result of each step it might help clear up what is happening.
|
|
|
|
|
i will try it out thanks
|
|
|
|