PDA

View Full Version : سوال: نمایش گریدویو بصورت ستونی



enekas
دوشنبه 19 تیر 1391, 10:19 صبح
سلام

من برنامه دارم که توی آن سه تا کامبو باکس برای روز و ماه و سال است

Cmbroz

Cmbmah

Cmbsal

و دو تا باتن و یک دیتا گرید ویو و یک تکست باکس

وقتی کاربر مثلا عدد 5 را وارد میکند آرایه ای به اندازه 5 ایجاد میشود

و کاربر میتواند 5 مرتبه تاریخ را وارد کند

من میخوام با هر بار وارد کردن تاریخ و زدن باتن اولی تاریخ در دیتاگرید ویو نمایش داده شود

و وقتی هر 5 تاریخ وارد شد با زدن دکمه باتن دومی اطلاعات در بانک اطلاعاتی ذخیره شود

اما هر کار میکنم اطلاعات بصورت سطری و زیر هم نمایش داده میشود نه ستونی

کد زیر :

DataTable dt =new DataTable();

For(int i=0;i<=4;i++)

{

dt.columns.Add(i.toString());

dt.Rows.Add(i.Tostring());

DataGrideView1.DataSource=dt;

}

این کد 5 تا ستون میسازد اما اعداد 0 تا 4 را در سطر اول زیر هم مینویسد

اما من میخواهم هر عدد را در یک ستون بنویسد

لطفا راهنمایی کنید

با تشکر

veniz2008
دوشنبه 19 تیر 1391, 11:33 صبح
سلام، با فرض اینکه برای روز و ماه و سال 3 ستون بخواید و مثلا کاربر عدد 5 رو وارد کرده باشه ( یعنی 5 تا سطر که هر سطر 3 تا ستون داشته باشه):

DataTable dt = new DataTable();
for(int i = 0; i<5;i++)
{
for (int j = 0; j < 3; j++)
{
dt.Columns.Add(i.ToString());
}
dt.Rows.Add(i.ToString());
}
موفق باشید.

enekas
دوشنبه 19 تیر 1391, 12:28 عصر
سلام، با فرض اینکه برای روز و ماه و سال 3 ستون بخواید و مثلا کاربر عدد 5 رو وارد کرده باشه ( یعنی 5 تا سطر که هر سطر 3 تا ستون داشته باشه):

DataTable dt = new DataTable();
for(int i = 0; i<5;i++)
{
for (int j = 0; j < 3; j++)
{
dt.Columns.Add(i.ToString());
}
dt.Rows.Add(i.ToString());
}
موفق باشید.
.
با سلام
ممنون اما من یه رشته تعریف کردم و تاریخ را کلی در ان وارد کردم و با هر بار ثبت فقط یه ستون برا ی تاریخ ثبت میشه

veniz2008
دوشنبه 19 تیر 1391, 12:52 عصر
من متوجه نمیشم شما دقیقا چی میخواید، میخواید تاریخ رو که مثلا بصورت 1392/04/19 هست رو بصورت جدا جدا درون 3 تا ستون بذاری؟( یعنی روز در یک ستون، ماه در یه ستون دیگه و سال هم در یه ستون دیگه)

enekas
دوشنبه 19 تیر 1391, 13:23 عصر
ببین محمد جان
شاید من بد توضیح دادم
بحث من تاریخ نیست
بحث من اینه که تاریخ ها را برام زیر هم مینویسه یعنی همه را در یک سطر مینویسه
مثلا
4/5/1391
10/4/1391
4/9/1391

اما من میخوام ستونی بنویسه و هر کدام در یک ستون کنار هم
مثلا
4/5/1391 6/8/1391 10/11/1391
بازم ممنون

veniz2008
دوشنبه 19 تیر 1391, 13:38 عصر
شما خودت تو کدنویسی اشتباه کرده بودی،وقتی نمیخوای سطر جدید داشته باشی چرا Row اضافه کردی؟،اینطوری بنویس:

for (int i = 0; i < 3; i++)
{
dt.Columns.Add(i.ToString());
}
dataGridView1.DataSource = dt;

enekas
دوشنبه 19 تیر 1391, 18:15 عصر
محمد جان این کد را امتحان کردم
با این کد تاریخ در سطر و ستون اول نمایش داده میشه اما
مشکل اینه که وقتی تاریخ دوم را مینویسم بجای اینکه در سطر اول و ستون دوم نمایش داده بشه
میاد بجای اولی
یعنی جایگزین تاریخ اولی در سطر اول ستون اول میشه
من نمیدونم چطوری باید تاریخ های دوم و سوم و ...... را در ستون های بعدی نمایش بدم
بازم ممنون

veniz2008
دوشنبه 19 تیر 1391, 18:37 عصر
لطف کن کدت رو کامل بذار.

enekas
چهارشنبه 21 تیر 1391, 07:38 صبح
ببینید فرض کنیم یک تکست باکس داریم و یک دیتاگرید ویو

در قسمت کی پرس تکست باکس این کد را نوشتیم

DataTable dt =new DataTable();

Int i=int.Parse(textBox1.Text);

If(e.keychar==’/r’)

{

dt.columns.Add(i.ToString());

dt.Rows.Add(i.ToString());

DataGridView1.DataSource=dt;

}

کد بالا با هر مرتبه نوشتن در تکست باکس و زدن اینتر یک سطر و ستون ایجاد میکند و مقدار تکست باکس را در سطر و ستون مینویسد

تا اینجا مشکلی نیست

مشکل اینه که من میخوام وقتی برای مرتبه دوم عددی در تکست باکس نوشتم و اینتر زدم ستون دوم ایجاد شود

و عدد دوم در ستون دوم و سطر اول نوشته شود

دوستان عزیز من میخوام با هر مرتبه عدد وارد کردن یک ستون جدید ایجاد شود اما سطر فقط همان یکی باشد

enekas
چهارشنبه 21 تیر 1391, 11:52 صبح
اقا یکی جواب بده لطفا
الان چند روز گیر همین کد برنامه ام

mehran788
چهارشنبه 21 تیر 1391, 12:09 عصر
سلام.
مي توني يك حقه بزني.تا اونجا كه من مي دونم و حتي يك بار هم براش ژست گذاشته بودم نميشه تو سي شارژ متغييري تعريف كرد كه مقدارش بعد از هر بار اجرا از بين نره به خاطر همين تو مي توني يك ليبل يا تكست باكس ديگه بذاري و visible اون رو false كني.بار اول كه كد اجرا مي شه داخل اين تكست باكس رو مثلا 1 قرار بده و سطر و ستون رو به datagrid اضافه كنه و دفعه دوم بره بررسي كنه كه اگه مقدار تكست باكس 1 است يعني ديگه نيازي نيست كه سطر بعدي رو اظافه كنه و فقط يك ستون به datagrid اظافه كنه.اميدوارم به دردت بخوره

mehran788
چهارشنبه 21 تیر 1391, 12:10 عصر
سلام.
مي توني يك حقه بزني.تا اونجا كه من مي دونم و حتي يك بار هم براش پست گذاشته بودم نميشه تو سي شارپ متغييري تعريف كرد كه مقدارش بعد از هر بار اجرا از بين نره به خاطر همين تو مي توني يك ليبل يا تكست باكس ديگه بذاري و visible اون رو false كني.بار اول كه كد اجرا مي شه داخل اين تكست باكس رو مثلا 1 قرار بده و سطر و ستون رو به datagrid اضافه كنه و دفعه دوم بره بررسي كنه كه اگه مقدار تكست باكس 1 است يعني ديگه نيازي نيست كه سطر بعدي رو اظافه كنه و فقط يك ستون به datagrid اظافه كنه.اميدوارم به دردت بخوره

Mahmoud.Afrad
چهارشنبه 21 تیر 1391, 20:15 عصر
سلام
خوب برای اینکه در همون سطر اضافه کنه از اندیس همون سطر استفاده کنید. نیازی هم به استفاده از دیتاتیبل نیست
int i=int.Parse(textBox1.Text);
if (e.KeyChar == '\r')
{
dataGridView1.Columns.Add("","");
dataGridView1.Rows[0].Cells[dataGridView1.ColumnCount - 1].Value = Convert.ToString(i);
}