PDA

View Full Version : سوال: چگونگی نمایش ستونی به نام ردیف به طور اتواتیک همراه با نمایش اطلاعات جدول در دیتا گرید



iranigirl1364
سه شنبه 24 شهریور 1388, 09:34 صبح
با سلام:
دوستان گرامی من یک store procedure نوشتم که هنگام load شدن فرم اطلاعات را از یک جدول می خواند و در یک دیتا گرید نمایش می دهد
چگونه می توان علاوه بر نمایش اطلاعات جدول در دیتا گرید ,ستونی برای نمایش ردیف به صورت اتوماتیک اضافه کرد؟(در کنار نمایش اطلاعات از جدول یک ستون هم برای نمایش ردیف دیده شود.)
لطفا مرا راهنمایی کنید
با تشکر و احترام فراوان

asefy2008
سه شنبه 24 شهریور 1388, 13:58 عصر
میشه بیشتر توضیح بدید.
آیا اون ستون ردیف به پایگاه داده وصل است یا این که خودتون می خواید اون رو ایجاد کنید و به پایگاه وصل نباشه؟
اگر می خواید یک ستون برای شماره گذاری داشته باشد و این که اون شماره ها همیشه مرتب باشه این (http://barnamenevis.org/forum/showthread.php?t=169830) رو نگاه کنید .
در ضمن بجای یه ستون می تونید از rowheaderاستفاده کنید؟

ali_md110
سه شنبه 24 شهریور 1388, 22:10 عصر
سلام دوست عزیز
اگر منظورتون زدن ردیف هستش که با یک حلقه ساده مشکلتون حله

void Radif_datagrid(DataGridView Dgview)
{
int i = 0;
for (i = 0; i < Dgview.Rows.Count; i++)
{
برای header ردیف از سطر زیر استفاده کن
Dgview.Rows[i].HeaderCell.Value = (i + 1).ToString();
Dgview.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
برای اولین ستون کد زیر استفاده کن
Dgview.Rows[i].Cells[0].Value = (i + 1).ToString();
}
}
توی رویداد new فرمتون کد زیر رو صدا بزن

public Form2()
{
InitializeComponent();

dataGridView1.RowsAdded += dataGridView1_RowsAdded;
}
توی روال رویداد گرایدو تون روال RowsAdded و RowRemoved هم تابعتون رو صدا بزنید

private void dataGridView1_RowsAdded(object sender, System.Windows.Forms.DataGridViewRowsAddedEventArg s e)
{

Radif_datagrid(dataGridView1);
}

asefy2008
چهارشنبه 25 شهریور 1388, 09:26 صبح
سلام دوست عزیز
اگر منظورتون زدن ردیف هستش که با یک حلقه ساده مشکلتون حله

void Radif_datagrid(DataGridView Dgview)
{
int i = 0;
for (i = 0; i < Dgview.Rows.Count; i++)
{
برای header ردیف از سطر زیر استفاده کن
Dgview.Rows[i].HeaderCell.Value = (i + 1).ToString();
Dgview.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
برای اولین ستون کد زیر استفاده کن
Dgview.Rows[i].Cells[0].Value = (i + 1).ToString();
}
}
توی رویداد new فرمتون کد زیر رو صدا بزن

public Form2()
{
InitializeComponent();

dataGridView1.RowsAdded += dataGridView1_RowsAdded;
}
توی روال رویداد گرایدو تون روال RowsAdded و RowRemoved هم تابعتون رو صدا بزنید

private void dataGridView1_RowsAdded(object sender, System.Windows.Forms.DataGridViewRowsAddedEventArg s e)
{

Radif_datagrid(dataGridView1);
}
دوست من اون لینکی که قرار دادم رو نگاه کنید .نیاز به این همه کد هم نیست رویداد cellformating راه حل سوال ایشون هست از اون حلقه هم کار رو بهتر انجام میده.
موفق باشید

ali_md110
چهارشنبه 25 شهریور 1388, 14:59 عصر
رویداد cellformating که ذکر کردید من مثال شما رو دیدم مثل این میمیونه که دایم توی حلقه افتاده و از اون لرزشی که داره مشه فهمید

asefy2008
چهارشنبه 25 شهریور 1388, 21:34 عصر
مشکلش حل شده بود البته فکر کنم تو اون تایپیک راه حل به طور کامل ذکر نشد من هم الان سی شارپ ندارم که ببینم چی بود. ولی این (http://barnamenevis.org/forum/showthread.php?t=170457) تایپیک هم خیلی به من کمک کرد.
در ضمن اگر شماره ردیف ها رو تو rowheader بزاره یا این که به بانک وصل نکنه اون رویداد مشکلی ایجاد نمی کنه.

iranigirl1364
پنج شنبه 26 شهریور 1388, 08:36 صبح
با سلام:
دوست گرامی با آی دی ali_md110 من کد شما را امتحان کردم و درست جواب می دهد و فقط یک مشکل عمده وجود دارد من هنگام load فرم یک store procedure را صدا می زنم که اطلاعاتی مانند زیر از یک جدول برای من می خواند و در دیتا گرید نمایش می دهد:

کد پرسنلی نام شماره شناسنامه
10 س 120
12 س 200
14 م 400

و این کد شما ردیف ها را ایجاد میکند اما آنها را به جای ستون کد پرسنلی به صورت زیر قرار می دهد

کد پرسنلی نام شماره شناسنامه
1 س 120
2 س 200
3م 400

چه راهی وجود دارد که این ردیف اتوماتیک به صورت زیر نمایش داده شود

ردیف کد پرسنلی نام شماره شناسنامه
1 10 س 120
2 12 س200
3 14 م 400

لطفا مرا راهنمایی کنید
با تشکر و احترام فراوان

iranigirl1364
پنج شنبه 26 شهریور 1388, 08:49 صبح
با سلام:
دوست گرامی با آی دی asefy2008 من به لینک سر زدم اما راستش بیشتر گیج شدم اگه ممکنه جواب صحیح را با توجه به مثالی که در تاپیک قبلی زدم, برام اینجا قرار دهید
لطفا مرا راهنمایی کنید
با تشکر و احترام فراوان

asefy2008
پنج شنبه 26 شهریور 1388, 11:39 صبح
این کد شماره ردیف ها رو در rowheader قرار میده.

private void banckMobileDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridView1.Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
}

iranigirl1364
جمعه 27 شهریور 1388, 08:47 صبح
با سلام::ناراحت:
دوستان گرامی هیچ کدام از کد ها نتیجه ای را که با مثال توضیح دادم نمی دهند
ممکنه منو راهنمایی کنید؟
با تشکر و احترام فراوان

asefy2008
جمعه 27 شهریور 1388, 12:40 عصر
دوست من شما بعد از این که ستون مورد نظرتون یعنی ردیف رو ایجاد کردید رویداد CellFormatting گریدتون رو برابر کد زیر قرار دهید:


DataGridView[0,e.RowIndex].Value = e.RowIndex + 1;

iranigirl1364
جمعه 27 شهریور 1388, 14:18 عصر
با سلام:
من در رویداد form-load مربوط به فرمم یک store procedure نوشتم که اطلاعاتم را از آن جدول به صورت زیر می خواند و در دیتا گرید نمایش می دهد:
کد پرسنلی / نام / شماره شناسنامه
14 / س / 821
15 / ن / 456
16 / م / 100
این اطلاعات که مثال زدم با load شدن فرمم از یک جدول خوانده می شون و در دیتا گرید نمایش داده می شوند
من در جدول ستونی به نام ردیف ندارم
می خواهم هنگاه load فرمم علاوه بر اعلاعاتی که مثال زدم یک ستون به نام ردیف تولید شود و به ترتیب از 1 تا آخر شماره گذاری شود مانند مثال زیر:
ردیف / کد پرسنلی / نام / شماره شناسنامه
1 / 14 / س / 821
2 / 15 / ن / 456
3 / 16 / م / 100
لطفا بگویید چه کار کنم چون نمیشه ستون اضافه کنم . من سعی کردم از راهنمایی شما استفاده کنم و ستون اضافه کنم اما نشد.
لطفا مرا ارهنمایی کنید
با تشکر و احترام فراوان