PDA

View Full Version : مشکل در نمایش محتوای موجود در آرایه با سی شارپ



setareh2013
دوشنبه 08 دی 1393, 18:51 عصر
سلام
من یک آرایه با سه سطر و 10 ستون دارم . در واقع 10 کالا دارم که دارای خصوصیت های نام ، قیمت و تعداد هستند .
می خوام اونها رو نشون بدم . به صورت زیر
نام کالا قیمت تعداد
کالای 1 1000 2
کالای 2 2000 3

...
اگه بخوام در زمان لود صفحه همه ی اونها رو نشون بدم باید 30 تا لیبل تعریف کنم . کسی راه دیگه ای سراغ نداره .
که به صورت بالا نشونشون بدم .
ضمنا باید بتونم محاسبه ریاضی روشون انجام بدم مثلا قیمت کل کالاهای انتخاب شده رو بدست بیارم .

RIG000
دوشنبه 08 دی 1393, 19:37 عصر
اینی که شما گفتی میشه 10 سطر با 3 ستون.
به هر حال اگه هم چین چیز ثابتی داری باید در جایی نشون بدی. رو هوا که نمیشه نشون بدیش. یا لیبل میذاری یا گرید یا هر چیزی که قدرت مانور روش داری.
ب نظرم گرید بذاری میتونی راحت تر توش عملیات انجام بدی. مخصوصا که دوستان با گرید زیاد سرو کله زدن و میتونن کمکت کنن.
برای محاسبات ریاضیش هم میتونی سطر و ستون رو با ایندکسشون بخونی و عملیاتش رو در هر جایی مثل label یا textbox یا ته همون گرید نشون بدی....

erfan_urchin
دوشنبه 08 دی 1393, 19:39 عصر
من فکر کنم منظور شما ماتریس هستش چون آرایه یک ستون بیشتر نداره
و ضمنا فکر کنم منظورتون 10سطر و 3ستون هستش
اگه منظورتون اینایی هست که گفتم میتونید بریزید توی تکست باکس
یعنی یه همچین چیزی
string[,] s = new string[10, 3];
s[0, 0] = "کالای1";
s[0, 1] = "2000";
s[0, 2] = "2";
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 3; j++)
textBox1.Text += s[i, j] + " ";
textBox1.Text += "\r\n";
}

setareh2013
سه شنبه 09 دی 1393, 12:08 عصر
اینی که شما گفتی میشه 10 سطر با 3 ستون.
به هر حال اگه هم چین چیز ثابتی داری باید در جایی نشون بدی. رو هوا که نمیشه نشون بدیش. یا لیبل میذاری یا گرید یا هر چیزی که قدرت مانور روش داری.
ب نظرم گرید بذاری میتونی راحت تر توش عملیات انجام بدی. مخصوصا که دوستان با گرید زیاد سرو کله زدن و میتونن کمکت کنن.
برای محاسبات ریاضیش هم میتونی سطر و ستون رو با ایندکسشون بخونی و عملیاتش رو در هر جایی مثل label یا textbox یا ته همون گرید نشون بدی....

بله اشتباه کردم 10 سطر و 3 ستون
نمی دونم محتویات این ماتریس رو چه طوری در گریدویو نشون بدم

erfan_urchin
سه شنبه 09 دی 1393, 12:25 عصر
همین کدی که گفتمو شما میتونی برای گریدویو هم استفاده کنی، یعنی اول بریزی تو دیتا تیبل و بعد بریزی تو گریدویو
یعنی یه همچین چیزی
DataTable dt = new DataTable();
dt.Columns.Add("name");
dt.Columns.Add("price");
dt.Columns.Add("count");
string[,] s = new string[10, 3];
s[0, 0] = "کالای1";
s[0, 1] = "2000";
s[0, 2] = "2";
for (int i = 0; i < 10; i++)
{
DataRow NewRow=dt.NewRow();
for (int j = 0; j < 3; j++)
{
NewRow[j] = s[i, j];
}
dt.Rows.Add(NewRow);
}
dataGridView1.DataSource = dt;

setareh2013
سه شنبه 09 دی 1393, 12:27 عصر
ممنون از شما
یه مشکل دیگه هم داشتم
من آرایه رو داخل یک کلاس تعریف کردم به صورت زیر








public string[,] array = new string[3, 2] { { "کالای1", "کالای 2" }, { "1000", "2000" }, { "2", "3" } };



مشکل اینه که وقتی داخل برنامه مقادیر رو عوض میکنم ، عوض میشه برنامه رو که می بندم و باز میکنم باز همون اطلاعات بالا رو نشون میده . چه کار کنم که اطلاعات تغییرداده شده ذخیره بشن ؟

erfan_urchin
سه شنبه 09 دی 1393, 12:40 عصر
بله قاعدش هم همینه که بعد از بستن و باز کردن دوباره همین اطلاعات رو نشون بده
به نظر من بهترین راه استفاده از دیتابیس هستش تا اطلاعاتتون رو بتونید توش ذخیره کنید چون ماتریس هرچی رو بهش بدین همونو نشون میده و قابلیت ذخیره و تغییر نداره
ولی یه راهی داره که یه مقدار سخته ولی شاید کارتونو راه بندازه (البته این راه چیزیو ذخیره نمیکنه)
اونم اینه که به جای اینکه توی ماتریس مقدار بزارین، ورودی بدین یعنی مثلا
public class test
{
public int myFunction(string s1, string s2, string s3, string s4, string s5, string s6)
{
string[,] array = new string[3, 2] { { s1, s2 }, { s3, s4 }, { s5, s6 } };
}
}