PDA

View Full Version : مبتدی: مشکل در فراخوانی متد داخل کلاس



abolfazl_d_sh
چهارشنبه 16 بهمن 1392, 09:59 صبح
سلام
من یه کلاس ساختم و داخلش متد زیر رو نوشتم که یک دیتا گرید رو پر میکنه

public void DataShow_grid()
{
ShowData_frm frm2 = new ShowData_frm();
SqlConnection con1 = new SqlConnection("server=localhost;database=STUDENT;Integrated Security=True");
SqlDataAdapter dadapter1 = new SqlDataAdapter("select * from PERSON", con1);
DataSet ds1 = new DataSet();
DataTableMapping tblmap = new DataTableMapping();
DataColumnMapping colmap = new DataColumnMapping();
tblmap = dadapter1.TableMappings.Add("Table", "person");
colmap = tblmap.ColumnMappings.Add("Code", "Student ID");
colmap = tblmap.ColumnMappings.Add("Name", "First Name");
colmap = tblmap.ColumnMappings.Add("Family", "Last Name");
colmap = tblmap.ColumnMappings.Add("Bedehkari", "Debtor");
colmap = tblmap.ColumnMappings.Add("Bestankari", "Creditor");
dadapter1.Fill(ds1);
frm2.dataGrid1.DataSource = ds1;
frm2.dataGrid1.DataMember = "person";
}

قراره که با استفاده از یه کلید تو فرم یک این متد فراخونی بشه و دیتا گرید رو تو فرم دو پر کنه.ولی فقط فرم دو باز میشه و دیتا گریدش پر نمیشه.ولی اگه این کد ها رو مستقیما تو کلید فرم یک بنویسم درسته.مشکل چیه؟
ممنون

مهرداد صفا
چهارشنبه 16 بهمن 1392, 20:01 عصر
سلام.
متود frm2.Show رو دقیقا کجا اجرا می کنید؟

ZivehDesigne
چهارشنبه 16 بهمن 1392, 20:15 عصر
شما قبلا از کلاس استفاده کردید؟

abas70
چهارشنبه 16 بهمن 1392, 20:33 عصر
سلام
شما حتما وقتی میخواید متد ()frm2.Show را فراخوانی کنید از فرم 2 تون یه object دیگه میسازین
باید بر کردن دیتا گرید و فراخوانی show را با یه object انجام بدین
یا ()frm2.Show را در همون متد DataShow_grid() بزارید یا object تتونو global تعریف کنید

abolfazl_d_sh
چهارشنبه 16 بهمن 1392, 21:09 عصر
متد frm2.show رو در کلید فرم یک و پس از فراخونی متد DataShow_grid نوشتم.اینم کد:


private void button2_Click(object sender, EventArgs e)
{
ShowData sd = new ShowData(); //نمونه سازی از کلاس
ShowData_frm frm2 = new ShowData_frm(); //نمونه سازی فرم 2
sd.DataShow_grid(); //متد داخل کلاس
frm2.Show(); //فراخوانی فرم 2
}

طبق پست 4 متد frm2.show رو تو متدDataShow_grid نوشتم ولی برنامه هنگام کلیک روی باتن ارور میده:


class ShowData
{
SqlConnection con1 = new SqlConnection("server=localhost;database=STUDENT;Integrated Security=True");
SqlDataAdapter dadapter1;
DataSet ds1 = new DataSet();
ShowData_frm frm2 = new ShowData_frm();
public void DataShow_grid()
{
dadapter1 = new SqlDataAdapter("select * from PERSON", con1);
DataTableMapping tblmap = new DataTableMapping();
DataColumnMapping colmap = new DataColumnMapping();
tblmap = dadapter1.TableMappings.Add("Table", "person");
colmap = tblmap.ColumnMappings.Add("Code", "Student ID");
colmap = tblmap.ColumnMappings.Add("Name", "First Name");
colmap = tblmap.ColumnMappings.Add("Family", "Last Name");
colmap = tblmap.ColumnMappings.Add("Bedehkari", "Debtor");
colmap = tblmap.ColumnMappings.Add("Bestankari", "Creditor");
dadapter1.Fill(ds1);
frm2.dataGrid1.DataSource = ds1;
frm2.dataGrid1.DataMember = "person";
frm2.Show();
}
}

abas70
چهارشنبه 16 بهمن 1392, 22:38 عصر
اینجوری بنویس ببین درست میشه


private void button2_Click(object sender, EventArgs e)
{
ShowData sd = new ShowData(); //نمونه سازی از کلاس
sd.DataShow_grid(); //متد داخل کلاس2
}




کلاستم اینجوری بنویس


class ShowData
{
public void DataShow_grid()
{

SqlConnection con1 = new SqlConnection("server=localhost;database=STUDENT;I ntegrated Security=True");
DataSet ds1 = new DataSet();
ShowData_frm frm2 = new ShowData_frm();
SqlDataAdapter dadapter1 = new SqlDataAdapter("select * from PERSON", con1);
DataTableMapping tblmap = new DataTableMapping();
DataColumnMapping colmap = new DataColumnMapping();
tblmap = dadapter1.TableMappings.Add("Table", "person");
colmap = tblmap.ColumnMappings.Add("Code", "Student ID");
colmap = tblmap.ColumnMappings.Add("Name", "First Name");
colmap = tblmap.ColumnMappings.Add("Family", "Last Name");
colmap = tblmap.ColumnMappings.Add("Bedehkari", "Debtor");
colmap = tblmap.ColumnMappings.Add("Bestankari", "Creditor");
dadapter1.Fill(ds1);
frm2.dataGrid1.DataSource = ds1;
frm2.dataGrid1.DataMember = "person";
frm2.Show();
}
}

abolfazl_d_sh
چهارشنبه 16 بهمن 1392, 22:57 عصر
ممنون آقای abas70
درست شد
:لبخندساده: