PDA

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



davidrobert
یک شنبه 25 فروردین 1392, 16:04 عصر
سلام من میخوام اطلاعات مربوط به جدول شماره سند و فاکتور رو در جدول دیتاگرید به صورت کامبوباکس نشون بدم وقتی طرف شماره سند 1 رو انتخاب کرددر دیتاگرید شماره فاکتور 1001 هم انتخاب بشه از جدول دیابیس به صورت خوتکار در فیلد شماره فاکتور یا شماره فاکتور رو انتخاب میکنم شماره سند رو به صورت خوتکار در فیلد شماره سند در دیتاگرید نشون داده بشه ممنون میشم در ضمینی نمایش کد نشون بدید با تشکر

amir_pro
یک شنبه 25 فروردین 1392, 16:21 عصر
برا اضافه کردن این کار اول یه ستون از نوع کامبوباکس به دیتاگرید اضافه کن بعدش مثل یه کامبو باکس معمولی پرش کن. خیلی روش داره ولی یکیش اینه که برات مینویسم. خودت دیگه کانکشن و ایناشا درست کن چون لایه ای نوشتم
OleDbDataReader dr;
ColCodeKala.Items.Clear();
cmd.Connection = Access.con;
cmd.Parameters.Clear();
cmd.CommandText = "select Code_Kala from Kala";
Access.Connect();
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
ColCodeKala.Items.Add(dr[0].ToString());
}
dr.Close();
Access.Disconnect();
}
else
{
ColCodeKala.Items.Clear();

dr.Close();
Access.Disconnect();
}

برا اینکه حالا یکی این کدهای کالا رو انتخاب کردی بیاد بر اساس اون یه select انجام داده بشه از کد زیر ایده بگیر.
private void DgvKharid_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == ColCodeKala.Index && e.RowIndex >= 0) //check if combobox column
{
DgvKharid[2, e.RowIndex].Value = Kharid.ShowNameKala(DgvKharid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
}
}

امیدوارم کمکت کنه

davidrobert
دوشنبه 26 فروردین 1392, 14:42 عصر
ممنون بابت کمکتون من کدهام رو نوشتم به این صورت
در در فرم لود هستش
private void FrmListRecFactorKhedemat_Load(object sender, EventArgs e)
{
//کد مربوط به اتصال برای خواندن اطلاعات شمازه سند
SqlConnection conr = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DbPoshak.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmdr = new SqlCommand();
SqlDataAdapter dar = new SqlDataAdapter();
SqlDataReader der;
clmDoc.Items.Clear();
cmdr.Connection = conr;
cmdr.Parameters.Clear();
cmdr.CommandText = "SELECT TblDocAndNum.DN_Doc FROM TblDocAndNum";
conr.Open();
der = cmdr.ExecuteReader();
if (der.HasRows)
{
while (der.Read())
{
clmDoc.Items.Add(der[0].ToString());
}
der.Close();
conr.Close();
}
else
{
clmDoc.Items.Clear();
der.Close();
conr.Close();
}
}
ولی من دستورات مربوط به این رو نفهمیدم
private void DgvKharid_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == ColCodeKala.Index && e.RowIndex >= 0) //check if combobox column
{
DgvKharid[2, e.RowIndex].Value = Kharid.ShowNameKala(DgvKharid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
}
}


یعنی نفهمیدم این خط رو DgvKharid[2, e.RowIndex].Value = Kharid.ShowNameKala(DgvKharid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()); مقدار Kharidو مقدار ShowNameKala از کجا امده و مقدار 2 منظور چی هستش ممنون میشم من رو کمک کنید.

amir_pro
دوشنبه 26 فروردین 1392, 16:52 عصر
دوست عزیز در مورد توضیح کد بالا باید بگم که ستون اول دیتاگرید که هیچی چون ردیف و اتوماتیک پر میشه. ستون دوم از نوع کمبوباکس هست که توی فرم لود اطلاعات بهش وارد میشه که این اطلاعات در واقع کد کالا هست. حالا عدد 2 نشان دهنده ستون سوم هست (columnindex=2) که نام کالاست. وقتی کاربر هر کد کالایی رو انتخاب کنه بدیهی که باید نام اون کالا تو ستون و سلول مربوطه نشون داده بشه پس 2 همون ستون نام کالا هست.
ColCodeKala اسم ستون کمبوباکسس. شرط if مشخص میکنه اگه روی ستون کد کالا و سطر 0 به بعد که در واقع سطر یک به بعد در ظاهر هست (چون عناوین ستونها خودشون یه سطر تشکیل میدند) کلیک شد بیاد حالا چیکار بکنه: :متفکر:
گفتم که برنامه رو لایه ای نوشتم. ShowNameKala یه تابع تو کلاس Kharid هست که یه متغیر رشته ای که در واقع همون کد کالا هست بهش ارسال میشه و خوب این تابع هم نوع برگشتی رشته هست که همون نام کالا هست. اگه باز مشکلی بود بپرس

davidrobert
دوشنبه 26 فروردین 1392, 21:40 عصر
برادر من از کلاس اتفاده نمیکنم حالا چطور داخل کلاسم فیلد دیتگرید رو public کنم در صورتی که داخل دیتاگرید نمیشه که بتونم یه کلاس خرید بیسازم و در داخل کلاس خرید یه کلاس دیگه تعریف کنم به نام نمایش نام کالا من این ها رو در فرم لود نوشتم دستورات کانکشن رو و در رویداد cellvelluechange مقدار کلاس خرید رو بدم و یا کلاس خرید رو معرفی کنم ممنون میشم اگه در این ضمینی فایلی دارید که در اختیار من قرار بدید با اسکول سرور تو بتوانم بفهمم که چطور درست کنم ممنون میشم. با تشکر فراوان

amir_pro
سه شنبه 27 فروردین 1392, 02:43 صبح
عزیز من یکم بیشتر توجه کن. یه بار دیگه کدهای بالا و توضیحاتش رو بخون اگه متوجه نشدی اون موقع کدهای فایل ضمیه شده رو ببین.
توضیح کدهای پیوستی:

ببین موقع طراحی یه اسم مشخص برای ستون کد کالا باید بزاری
تابع ShowCode_Kala = برای نشان دادن کد کالاها در ستون کمبوباکس در داخل دیتاگرید که این ستون از نوع DataGridViewComboBoxColumn
اسمی که برای ستون کد کالا گذاشتی رو موقع فراخوانی تابع بالا بهش ارسال میکنی

تابع ShowNameKala = برای نشان دادن نام کالا بر اساس کد کالای انتخابی در ستون نام کالا که از نوع datagridviewtextboxcolumn
----------------------
توی فرم طراحیت یه شی از کلاس BL_Kharid بساز و بعد تو فرم لودش کد زیر رو بنویس
Kharid.ShowCode_Kala(ColCodeKala);

رویداد CellValueChanged که فرقی نکرده. ببین این فایل که دانلود میکنی BLL مربوط به خریده. دیگه خودت فرض کن که DAL شم نوشتی که توش فقط یه Access.Connect(); و یه Access.Disconnect(); هست

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

102895

davidrobert
سه شنبه 27 فروردین 1392, 09:38 صبح
سلام خسته نباشید من دستورات رو نوشتم بدون هیچ نوع خطای ولی موقع اجرا دستورات اجرا نمیشن اصلاً اینم دستورات که نوشتم دستورات داخل کلاس
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Project_Poshak
{
class ClsFactorKhedemat
{
DataAccess da = new DataAccess();

public ClsFactorKhedemat()
{
}
//SqlCommand cmdr = new SqlCommand();
public void ShowCode_kalaa(System.Windows.Forms.DataGridViewCo mboBoxColumn clmDoc)
{
////کد مربوط به اتصال برای خواندن اطلاعات شمازه سند
SqlConnection conr = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DbPoshak.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmdr = new SqlCommand();
SqlDataAdapter dar = new SqlDataAdapter();
SqlDataReader der;
clmDoc.Items.Clear();
cmdr.Connection = conr;
cmdr.Parameters.Clear();
cmdr.CommandText = "SELECT DN_Doc FROM TblDocAndNum";
conr.Open();
der = cmdr.ExecuteReader();
if (der.HasRows)
{
while (der.Read())
{
clmDoc.Items.Add(der[0].ToString());
}
der.Close();
conr.Close();
}
else
{
clmDoc.Items.Clear();
der.Close();
conr.Close();
}
}
public string ShowNameKalaa(string strcodekala)
{
//کد مربوط به اتصال برای خواندن اطلاعات شمازه سند
SqlConnection conr = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DbPoshak.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmdr = new SqlCommand();
SqlDataAdapter dar = new SqlDataAdapter();
SqlDataReader der;
cmdr.Connection = conr;
cmdr.Parameters.Clear();
cmdr.Parameters.AddWithValue("@DN_Doc", strcodekala);
conr.Open();
der = cmdr.ExecuteReader();
if (der.HasRows)
{
der.Read();
string strnamekala = der[0].ToString();
der.Close();
conr.Close();
return strnamekala;
}
else
{
der.Close();
conr.Close();
return "";
}
}
}
}
دستورات داخل کلاس رو نوشتم همون جور که بود و اسم فیلد داخل دیتابیس رو هم معرفی کردم و همین تو اسم ستون داخل دیتاگرید رو وارد کردم در کلاس و در فرم که مقدار 2 رو داده بودید من مقدار یک دادم چون ستون من دومی ستون هستش و میدونم ستون ها از 0 شروع میشن تا به بالا بخاطر همین ستون 1 رو دادم ولی دلیل نمایش ندادن اطلاعات در داخل کامبوباکس دیتاگرید چی هستش ممنون میشم به هم کنید تا بدونم چرا اطلاعات نمایش نمیده کامبوباکس دیتاگرید ممنون بابت کمکتان با تشکر.
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
ClsFactorKhedemat cls=new ClsFactorKhedemat();
if (e.ColumnIndex == clmDoc.Index && e.RowIndex >= 0)
{
dataGridView1[1, e.RowIndex].Value = cls.ShowNameKalaa(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
}
}
ممنون از کمکتان با تشکر فراوان

amir_pro
سه شنبه 27 فروردین 1392, 13:29 عصر
توی تابع ShowNameKalaa که دستور سلکتی ننوشتی این از این. قاعدتا کد ShowCode_kalaa که درست. برنامه تا تریس بکن ببین اصلا دیتا ریدرت پر میشه یا نه. اگه میتونی تا شب صبر کن یه نمونه برنامه برات میزارم

amir_pro
سه شنبه 27 فروردین 1392, 19:52 عصر
102942

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

davidrobert
سه شنبه 27 فروردین 1392, 21:33 عصر
ممنون جواب گرفتم داده ها پور شدن داخل کامبوباکس فقط یه مشکل که دارم اینکه وقتی شماره سند یک رو انتخاب میکنم شماره فاکتور و کد خدمات رو بیاره ولی نمیاره این هم کد های که نوشتم ممنون بابت کد ردیف این هم میخواستم که به دست آوردم به وسیله شما خدا خیرت بده و فقط این ایراد که چرا وقتی روی عدد یک میزنم در شماره سند مقدار رو های کل داخل دیتا گرید رو نشون بده صفحه بسته میشه من برنامه رو هم تریس کردم وقتی بسته شود صفحه برنامه رفت از صفحه لود شروع کرد به تریس کردن نه صفحه که باهاش کار میکردم ممنون میشم من رو کمک کنید با تشکر فراوان اینم کداهای من برای خواندن اطلاعات دیتابیس در فیلد های دیگه
کد های مربوط به کلاس خواندن اطلاعات
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Project_Poshak
{
class ClsFactorKhedemat
{
DataAccess da = new DataAccess();

public ClsFactorKhedemat()
{
}
SqlCommand cmd = new SqlCommand();
public void Showcode_Kala(System.Windows.Forms.DataGridViewCom boBoxColumn clmDoc)
{
SqlDataReader dr;
clmDoc.Items.Clear();
cmd.Connection =da.con;
cmd.Parameters.Clear();
cmd.Parameters.Clear();
cmd.CommandText = "SELECT TblDocAndNum.DN_Doc FROM TblDocAndNum ORDER BY TblDocAndNum.DN_Doc DESC";
da.Connect();
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
clmDoc.Items.Add(dr[0].ToString());
}
dr.Close();
da.Disconnect();
}
else
{
clmDoc.Items.Clear();
dr.Close();
da.Disconnect();
}
}
public string shownamedoc(string strnumdoc)
{
SqlDataReader dr;
cmd.Connection = da.con;
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@pTblDocAndNum.DN_Doc", strnumdoc);
cmd.CommandText = "SELECT TblDocAndNum.DN_Doc, TblDocAndNum.DN_Num, TblDocAndNum.DN_CodeKhedemat FROM TblDocAndNum where TblDocAndNum.DN_Doc=@pTblDocAndNum.DN_Doc";
da.Connect();
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
string strnamekala = dr[0].ToString();
dr.Close();
da.Disconnect();
return strnamekala;
}
else
{
dr.Close();
da.Disconnect();
return "";
}
}
}
}
کد های مربوط به فرم برای خواندن اطلاعات
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Data.SqlClient;
namespace Project_Poshak
{
public partial class FrmListRecFactorKhedemat : Form
{
public FrmListRecFactorKhedemat()
{
InitializeComponent();
Program.MakebuttonStyle(this.BtnExit);
Program.MakebuttonStyle(this.btnmin);
}
ClsFactorKhedemat cls = new ClsFactorKhedemat();
//کد مربوط به جابه جایی برنامه
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

private void FrmListRecFactorKhedemat_Load(object sender, EventArgs e)
{
cls.Showcode_Kala(clmDoc);
dataGridView1[0, 0].Value = "1";
}

private void BtnExit_Click(object sender, EventArgs e)
{
this.Close();
}

private void btnmin_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}

private void panel1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, 0xa1, 0x2, 0);
}
}

private void panel2_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, 0xa1, 0x2, 0);
}
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == clmDoc.Index && e.RowIndex >= 0)
{
dataGridView1[2, e.RowIndex].Value = cls.shownamedoc(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
}
}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if ((e.ColumnIndex == 3) && (e.RowIndex >= 0) && (e.RowIndex != dataGridView1.RowCount - 1))
{
dataGridView1.Rows.RemoveAt(e.RowIndex);
}
}

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.IsCurrentCellDirty)
{
dataGridView1.CommitEdit(DataGridViewDataErrorCont exts.Commit);
}
}
}
}
من داخل کلاس در دستور select فیلد های که باید خوانده بیشه رو گفتم ولی داخل فیلد ها دیتاگرید باید چگونه نشون بدم رو نمی دانم ممنون میشم یه مورد رو هم کمک کنید با تشکر فراوان

amir_pro
چهارشنبه 28 فروردین 1392, 02:46 صبح
وقتی میخوای آیتمی اتخاب کنی از تو کمبوباکست تو کدش خط بعدش یدونه بیریک پوینت بزار ببین متغیرهات چه مقداری دارند. برنامه تا بده تا بببینم مشکلش چیه و برات درست کنم بهت بدم

davidrobert
چهارشنبه 28 فروردین 1392, 08:13 صبح
ممنون مشکلی نداره فایلم رو بزار براتون قسمت فاکتور دریافت خدمات هستش که وقتی شماره سند رو میزنم شماره فاکتور و کد خدمات هم برام بیاره در فیلد هاش فقط ببخشید یه کمک دیگه هم میخواستم اگه مشکلی نباشه وقتی چند ردیف اطلاعات وارد شد موقع ثبت اطلاعات اگه طرف به صورت نقد پول واریز کرد اطلاعات ثبت بشه بره و بره برای چاپ اطلاعات وارد شده اگه نحوه پرداخت به صورت غیر نقد بود اطلاعات ثبت بشه چاپ بشه و یه صفحه وارد بیشه که هرچی که خریده شماره سند شماره فاکتور کد خدمات تعداد کل و قیمت واحد تخفیف و قیمت کل رو بیاره که برای اطلاعات بانکی یا نحوه دیگه برای پرداخت اطلاعات وارد کنیمو ثبت کنیم که این خدمات به صورت دیگه پرداخت شد و ثبت بشهفقط موقع ثبت چاپ صفحه دیگه باز شدن که همه اطلاعات که شامل شماره سند و فاکتور و کد خدمات در صفحه دیگه نشون داده بیشه کد ثبتش رو خود مینویسم فقط در صفحه دیگه نشون داده بیشه اطلاعات چاپ چی ها بودن ممنون بابت کمکتون username : admin password : 123 می باشد . http://www.up2www.com/uploads/1366171845321.zip

amir_pro
چهارشنبه 28 فروردین 1392, 17:44 عصر
فایلی که آپلود کردی خراب. مشکلاتت که خیلی شد. فایلی که من بهت دادم مشکلی نداره. هم کمبو رو پر میکنه و هم میشه یکی از آیتماشا انتخاب کنی و برا اساس اون نام کالا نمایش داده میشه

davidrobert
چهارشنبه 28 فروردین 1392, 17:56 عصر
سلام من فایل رو گذاشتم برای دانلود ایرادی نداره یک بار دیگه امتحان کنید خیلی ممنون میشم اگه کدام فقط بگید کدام ختش ایراد داره و چطور باید رفعش کرد خیلی ممنون میشم.

davidrobert
چهارشنبه 28 فروردین 1392, 19:24 عصر
درست شد ولی فقط یه فیلد رو میاره ببنیم میتونم فیلد سوم هم نشون بدم ممنون از کمکتون

davidrobert
چهارشنبه 28 فروردین 1392, 20:20 عصر
سلام برادر درست شد و تنها یک مشکل دیگه دارم اینکه کد خدمات رو نمیخونه ولی شماره فاکتور رو میخوانه ولی شماره کد خدمات رو نمخوانه ممنون کمک کنید تا کد خدمات رو هم بخوانه اینم کد من نمی دوانم چی کار باید انجام بدم که در این کد که مقدار فیلد سوم هم بخونه ممنون میشم از کمکتون.
این کد های کلاس
public string shownamedoc(string strnumdoc)
{
SqlDataReader dr;
cmd.Connection = da.con;
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@DN_Doc",strnumdoc);
cmd.CommandText = "SELECT DN_Num,DN_CodeKhedemat FROM TblDocAndNum where DN_Doc=@DN_Doc";
da.Connect();
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
string strnamekala = dr[0].ToString();
dr.Close();
da.Disconnect();
return strnamekala;
}
else
{
dr.Close();
da.Disconnect();
return "";
}
}
اینم کداهای داخل فرم برای خواندن ممنون میشم به هم بگید به وسیله یک فیلد چطور میتوانم اطلاعات باقی فیلد ها رو داخل دیتگرید بیارم من قسمت cellvaluechanged رو مقدار دیگه هم اضافه کردم که داخل دیتاگرید اطلاعات شماره فاکتور در فیلد فاکتور درست نشون داده میشه ولی اطلاعات مربوط به کد خدمات خیر بجای اینکه اطلاعات کد خدمات رو نشون میده همون اطلاعات داخل شماره فاکتور رو نشون میده همون رو داخل کد خدمات نشون میده مقدار داخل فیلد کد خدمات رو نشون نمیده یک مقدار دیگه رو نشون میده کد مربوط به cellvluechanged
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == clmDoc.Index && e.RowIndex >= 0)
{
dataGridView1[2, e.RowIndex].Value = cls.shownamedoc(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
dataGridView1[3, e.RowIndex].Value = cls.shownamedoc(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
}
}
کد مربوط به فرم
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Data.SqlClient;
namespace Project_Poshak
{
public partial class FrmListRecFactorKhedemat : Form
{
public FrmListRecFactorKhedemat()
{
InitializeComponent();
Program.MakebuttonStyle(this.BtnExit);
Program.MakebuttonStyle(this.btnmin);
}
ClsFactorKhedemat cls = new ClsFactorKhedemat();
//کد مربوط به جابه جایی برنامه
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

private void FrmListRecFactorKhedemat_Load(object sender, EventArgs e)
{
cls.Showcode_Kala(clmDoc);
dataGridView1[0, 0].Value = "1";
}

private void BtnExit_Click(object sender, EventArgs e)
{
this.Close();
}

private void btnmin_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}

private void panel1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, 0xa1, 0x2, 0);
}
}

private void panel2_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, 0xa1, 0x2, 0);
}
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == clmDoc.Index && e.RowIndex >= 0)
{
dataGridView1[2, e.RowIndex].Value = cls.shownamedoc(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
dataGridView1[3, e.RowIndex].Value = cls.shownamedoc(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
}
}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if ((e.ColumnIndex == 3) && (e.RowIndex >= 0) && (e.RowIndex != dataGridView1.RowCount - 1))
{
dataGridView1.Rows.RemoveAt(e.RowIndex);
}
}

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.IsCurrentCellDirty)
{
dataGridView1.CommitEdit(DataGridViewDataErrorCont exts.Commit);
}
}

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
dataGridView1[0, dataGridView1.RowCount - 1].Value = dataGridView1.RowCount.ToString();
for (int RowCount = 1; RowCount < dataGridView1.RowCount; RowCount++)
{
dataGridView1[0, RowCount - 1].Value = RowCount.ToString();
}
}

private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
for (int RowCount = 1; RowCount < dataGridView1.RowCount; RowCount++)
{
dataGridView1[0, RowCount - 1].Value = RowCount.ToString();
}
dataGridView1[0, dataGridView1.RowCount - 1].Value = dataGridView1.RowCount.ToString();
}
}
}

ممنونم بابت کمکتون.

amir_pro
چهارشنبه 28 فروردین 1392, 23:12 عصر
دوباره دانلود نشد. نمیخواد دیگه بزاری. من متوجه نشدم منظورت از "وسیله یک فیلد چطور میتوانم اطلاعات باقی فیلد ها رو داخل دیتگرید بیارم" چیه؟ اگه میخوای الاعات فیلدهای دیگه دیتاریدر رو بخونی خوب از dr[index].tostring() استفاده کن که این ایندکس شماره اندیش فیلدت هست و باید یادت باشه که تو دستور سلکتت نمیشه از * استفاده کنی

davidrobert
پنج شنبه 29 فروردین 1392, 09:45 صبح
ممنون بابت کمکتون فقط اگه امکانش باشه به هم بگید این مقدار رو باید کجاب به کار ببرم تا اطلاعات تمام دیتابیسم رو بخوانم و بریزم داخل دیتگرید خیلی ممنون میشم به همبگید این دستور dr[index].tostring() رو کجا باید انجام بدم به چه صورت تا جواب بگیرم با تشکر از کمکتان.

amir_pro
پنج شنبه 29 فروردین 1392, 12:03 عصر
ببین دوست عزیز خیلی راه هست برای نشون دادن اطلاعات توی دیتاگرید که یکیش استفاده از دیتاریدر و کامند به صورت مثالی بود که گفته بودم. یه کم در این مورد جستجو کنی خیلی کمکت میکنه. ببین فرض کن دیتاگریدت چهار تا ستون داره: شماره فاکتور، نام خریدار، تاریخ خرید و مبلغ کل فاکتور. فرضا میخوای این اطلاعات رو توی دیتاگرید نشون بدی. بعد از مرحله طراحی گریدت باید توی دستور سلکتت اینجوری بنویسی
cmd.commandtext="select factor_id,nam_Kharidar,Date_Kharid,TotalPrice from Factor"

این dr[index].tostring برای نشون دادن اطلاعاتت هست دیگه که به جای ایندکس باید شماره ستونی که در دیتاریدرت هست رو بزاری. یه کدی مثل این:
while(dr.read)
DgvFactor.Rows.Add(dr[0].tostring,dr[1].tostring,dr[2].tostring,dr[3].tostring);

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

davidrobert
پنج شنبه 29 فروردین 1392, 21:43 عصر
ممنون بابت کمکتون همون کاری که گفتید رو انجام دادم ولی مشکلی که دارم اینکه وقتی شماره سند رو انتخاب میکنم شماره فاکتور رو درست نشون میده ولی ایرادی که داره اینکه مقدار شماره فاکتور هم در کد خدمات نشون میده همه کار انجام دادم ولی مشکلیش اصلا رعف نشود یعنی وقتی از کامبوباکس مقدار 3 رو شماره سند انتخاب میکنم در شماره فاکتور مقدار 1003 رو درست قرار میده ولی در کد خدمات باید 103 قرار بده اشتباه ور میداری همون شماره فاکتور رو برای کد خدمات قرار میده ممنون میشم ببنید ایراد کار من چی هستش با تشکر اینم کد های مربوط به کلاس همون جور که گفته بودید امادم به این صورت کدهای while(dr.read)
DgvFactor.Rows.Add(dr[0].tostring,dr[1].tostring,dr[2].tostring,dr[3].tostring);

به نویسم مقدار اول dr[0].tostring() رو درست نشود میده ولی می یادم مقدار باز قرار بدم یعنی dr[1].tostring() رو ایراد میگیری و فقط مقدار اول رو ایراد نمیگیری اینهم کد های من در فرم کلاس
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Project_Poshak
{
class ClsFactorKhedemat
{
DataAccess da = new DataAccess();

public ClsFactorKhedemat()
{
}
SqlCommand cmd = new SqlCommand();
public void Showcode_Kala(System.Windows.Forms.DataGridViewCom boBoxColumn dataGridView1)
{
//clmDoc
SqlDataReader dr;
dataGridView1.Items.Clear();
cmd.Connection =da.con;
cmd.Parameters.Clear();
cmd.CommandText = "SELECT DN_Doc,DN_Num,DN_CodeKhedemat FROM TblDocAndNum ORDER BY DN_Doc DESC";
da.Connect();
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())

dataGridView1.Items.Add(dr[0].ToString());

dr.Close();
da.Disconnect();
}
else
{
dataGridView1.Items.Clear();
dr.Close();
da.Disconnect();
}
}
public string shownamedoc(string strnumdoc)
{
SqlDataReader dr;
cmd.Connection = da.con;
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@DN_Doc",strnumdoc);
cmd.CommandText = "SELECT DN_Num,DN_CodeKhedemat FROM TblDocAndNum where DN_Doc=@DN_Doc";
da.Connect();
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
string strnamekala = dr[0].ToString();
dr.Close();
da.Disconnect();
return strnamekala;
}
else
{
dr.Close();
da.Disconnect();
return "";
}
}
}
} و خود پروژه هم قرار میدم شاید بادنید ایراد برنامه چی هستش ممنون بابت کمکهای بی شماریتان یک دنیا ممنون خدا خیرت بده.
http://www.up2www.com/uploads/1366307293311.zip
این رو هم بهم بگید تا ببنیم ایرادش کجاس که س تا فیلد رو معرفی میکنی ولی وقت 2 تا رو نشون میده و مقدار سوم رو نشون نمیده.

amir_pro
جمعه 30 فروردین 1392, 18:27 عصر
به نظرم strnamekala خالیش باید کرد. دیگه از کدت چیزی دستگیرم نشد. یه جا فکر کنم یه + گذاشتی یا مقدار قبلی کمبو رو پاک نمیکنی

davidrobert
جمعه 30 فروردین 1392, 18:42 عصر
سلام مقدار strnamekala رو خالی کردم مقدار داخل فیلد ها دیتاگرید رو خالی کرد یعنی وقتی مقدار شماره سند رو انتخاب کردم مقداری نیاورد علامت + رو هم گشتم و فقط در قسمت اضافه کردن ردیف به کار بردم پروژه رو دانلود کنید تا ببنید دلیل خطاش چی هستش

davidrobert
شنبه 31 فروردین 1392, 10:57 صبح
بردار امکانش هست پروژه من رو دانلود کنید و قیمت فاکتور دریافت خدمات رو ببنید علت اینکه وقتی شماره سند رو انتخاب میکنم داخل دیتگرید مقدار شماره فاکتور رو درست نشون میده ولی مقدار کد خدمات رو اشتباه نشون میده یعنی مقدار شماره فاکتور رو هم در کد خدمات نشون میده.http://www.up2www.com/uploads/1366307293311.zip ممنون میشم ببنید ایرادش چی هستش من هر چقدر گشتم ایرادش رو نفهمیدم

amir_pro
شنبه 31 فروردین 1392, 12:04 عصر
فایلی که آپلود کردی خراب. باباجون تو همین برنامه نویس آپلود کن

davidrobert
شنبه 31 فروردین 1392, 12:52 عصر
برادر برنامه نویس اینقدر سنگین هستش که نمی شه آپلود کرد. من فایل رو میزنم میشه دانلود کرد من فایل رو روی سرور دیگه قرار میدم تا ببنیم میشه دانلود کرد یا ببخشید که اینقدر شما رو به زحمت انداختم.http://uplod.ir/19iaanonl0h4/Project_poshak.zip.htm این آدرس فایل جدید رو فرستادم از سایت دیگه.

davidrobert
یک شنبه 01 اردیبهشت 1392, 10:33 صبح
سلام لطفا کسی من رو کمک کنی من هیچ جور نمی توانم این مشکلم رو برای نمایش اطلاعات بر حسب شماره فاکتور نشون بدم خیلی ممنون میشم کسی من رو کمک کنی من پروژم رو هم گذاشتم رو اینترنت و تو نمایش اطلاعات بر حسب شماره سند که وقتی طرف شماره سند رو انتخاب میکنه شماره فاکتور کد خدمات هم انتخاب بیشه ولی با انتخاب شماره سند شماره فاکتور رو درست نشون میده و کد خدمات رو اشتباه نشون میده این مشکل من هستش خواهشن من رو یکی کمک کنی این هم پروزم http://uplod.ir/19iaanonl0h4/Project_poshak.zip.htm یکی تو نشون دادن اطلاعات کد خدمات و شماره فاکتور به وسیله شماره سند کمک کنی خیلی ممنون میشم.

davidrobert
دوشنبه 02 اردیبهشت 1392, 19:11 عصر
کسی نیست کمکم کنی در این ضمینی که وقتی شماره سندر و انتخاب میکنم شماره فاکتور و کد خدمات رو نشون بده داخل دیتاگرید من همه کار انجام دادم روی اینترنت هم کلی گشتم ولی وقتی داخل دیتاگرید کد 3 رو وارد میکنم که شماره فاکتور رو درست نشون میده ولی کد خدمات رو اشتباه نشون میده شماره فاکتور رو هم در شماره فاکتور دیتاگرید نشون میده و هم کد خدمات خواهش میکنم این رو کمک کنید علان 3 یا 4 روز گیر همین کد هستم تو سایت های ایرانی و خارجی میگردم چیزی پیدا نمیکنم.

khokhan
سه شنبه 03 اردیبهشت 1392, 17:05 عصر
کسی نیست کمکم کنی در این ضمینی که وقتی شماره سندر و انتخاب میکنم شماره فاکتور و کد خدمات رو نشون بده داخل دیتاگرید من همه کار انجام دادم روی اینترنت هم کلی گشتم ولی وقتی داخل دیتاگرید کد 3 رو وارد میکنم که شماره فاکتور رو درست نشون میده ولی کد خدمات رو اشتباه نشون میده شماره فاکتور رو هم در شماره فاکتور دیتاگرید نشون میده و هم کد خدمات خواهش میکنم این رو کمک کنید علان 3 یا 4 روز گیر همین کد هستم تو سایت های ایرانی و خارجی میگردم چیزی پیدا نمیکنم.

درود بر شما

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

اما این لینک آخری که فرستادی باز شد و در مورد نشان ندادن قیمت بود :چشمک:
یه خورده تغییرات روی برنامه تون دادم وایرادشو برطرف کردم اما راجع به اون ایراد دیگه من لینکی پیدا نکردم
اینو واسطون همینجا می ذارمش باز هم اگه موردی بود بگو

davidrobert
سه شنبه 03 اردیبهشت 1392, 17:13 عصر
یک دنیا ممنونت هستم دمت گرم خدا خیریت بده ببنیم کجاش رو ایراد داشتم این طوری میتونم فیلد های بیشتری رو برای نمایش نشون بدم دستت در نکونه