c_doost
دوشنبه 07 فروردین 1391, 23:11 عصر
سلام
من یک کومبو دارم که یک فیلد از دیتابیس را به آن بایند کردم (در فرم لود نوشتم )
private void frm_takhasos_honari_Load(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
da = new SqlDataAdapter("SELECT * FROM tbl_grouphonari", con);
da.Fill(ds, "tbl_grouphonari");
bs.DataSource = ds.Tables["tbl_grouphonari"];
cmb_reshtehonari.DataSource = ds.Tables["tbl_grouphonari"];
cmb_reshtehonari.DisplayMember = "reshte_honari";
cmb_reshtehonari.ValueMember = "code_reshte";
con.Close();
}
حالا میخوام وقتی یک آیتم از این کومبو انتخاب شد با این دستور سلکت یک فیلد دیگر از دیتتابیس را بگیرم (شرط دستور سلکت آیتم انتخابی در کومبو میباشد) و عملیاتی روی آن انجام دهم
این کد را در SelectedIndexChanged کومبو نوشتم :
private void cmb_reshtehonari_SelectedIndexChanged(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
cmd = new SqlCommand("SELECT * FROM tbl_grouphonari where reshte_honari='" + cmb_reshtehonari.Text + "'", con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
code_reshte = dr["code_reshte"].ToString();
}
dr.Close();
labelX1.Text = code_reshte;
}
مشکل اینجاست که پس از فرم لود شدن دستور سلکت موجود در SelectedIndexChanged اجرا میشود:متعجب: و فقط همان همان آیتم اول موجود در کومبو را بر می گرداند
حالا وقتی دو باره هر کدوم از آیتم را انتخاب میکنم هیچ کاری انجام نمیشه و همان دستور سلکت با آیتم اول کومبو نشان داده میشود .
خیلی برام عجیه کد کامل را هم قرار میدم خواهشا کمک کنید
با تشکر
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using System.Data.SqlClient;
namespace project_hoharmandan
{
public partial class frm_takhasos_honari : DevComponents.DotNetBar.Office2007Form
{
SqlDataReader dr;
SqlDataAdapter da;
SqlConnection con;
SqlCommand cmd;
DataSet ds;
BindingSource bs;
public frm_takhasos_honari()
{
InitializeComponent();
da = new SqlDataAdapter();
con = new SqlConnection(@"Data Source=.;Initial Catalog=honarmand;Integrated Security=True;Pooling=False");
cmd = new SqlCommand();
ds = new DataSet();
bs = new BindingSource();
}
string code_reshte="";
private void frm_takhasos_honari_Load(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
da = new SqlDataAdapter("SELECT * FROM tbl_grouphonari", con);
da.Fill(ds, "tbl_grouphonari");
bs.DataSource = ds.Tables["tbl_grouphonari"];
cmb_reshtehonari.DataSource = ds.Tables["tbl_grouphonari"];
cmb_reshtehonari.DisplayMember = "reshte_honari";
cmb_reshtehonari.ValueMember = "code_reshte";
con.Close();
}
private void buttonX1_Click(object sender, EventArgs e)
{
DataLayer.tbl_shenasetakhasosi.InsertRow(cmb_resht ehonari.Text,txt_takhasoshonari.Text,txt_shenase.T ext);
}
private void cmb_reshtehonari_SelectedIndexChanged(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
cmd = new SqlCommand("SELECT * FROM tbl_grouphonari where reshte_honari='" + cmb_reshtehonari.Text + "'", con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
code_reshte = dr["code_reshte"].ToString();
}
dr.Close();
labelX1.Text = code_reshte;
}
}
}
من یک کومبو دارم که یک فیلد از دیتابیس را به آن بایند کردم (در فرم لود نوشتم )
private void frm_takhasos_honari_Load(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
da = new SqlDataAdapter("SELECT * FROM tbl_grouphonari", con);
da.Fill(ds, "tbl_grouphonari");
bs.DataSource = ds.Tables["tbl_grouphonari"];
cmb_reshtehonari.DataSource = ds.Tables["tbl_grouphonari"];
cmb_reshtehonari.DisplayMember = "reshte_honari";
cmb_reshtehonari.ValueMember = "code_reshte";
con.Close();
}
حالا میخوام وقتی یک آیتم از این کومبو انتخاب شد با این دستور سلکت یک فیلد دیگر از دیتتابیس را بگیرم (شرط دستور سلکت آیتم انتخابی در کومبو میباشد) و عملیاتی روی آن انجام دهم
این کد را در SelectedIndexChanged کومبو نوشتم :
private void cmb_reshtehonari_SelectedIndexChanged(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
cmd = new SqlCommand("SELECT * FROM tbl_grouphonari where reshte_honari='" + cmb_reshtehonari.Text + "'", con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
code_reshte = dr["code_reshte"].ToString();
}
dr.Close();
labelX1.Text = code_reshte;
}
مشکل اینجاست که پس از فرم لود شدن دستور سلکت موجود در SelectedIndexChanged اجرا میشود:متعجب: و فقط همان همان آیتم اول موجود در کومبو را بر می گرداند
حالا وقتی دو باره هر کدوم از آیتم را انتخاب میکنم هیچ کاری انجام نمیشه و همان دستور سلکت با آیتم اول کومبو نشان داده میشود .
خیلی برام عجیه کد کامل را هم قرار میدم خواهشا کمک کنید
با تشکر
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using System.Data.SqlClient;
namespace project_hoharmandan
{
public partial class frm_takhasos_honari : DevComponents.DotNetBar.Office2007Form
{
SqlDataReader dr;
SqlDataAdapter da;
SqlConnection con;
SqlCommand cmd;
DataSet ds;
BindingSource bs;
public frm_takhasos_honari()
{
InitializeComponent();
da = new SqlDataAdapter();
con = new SqlConnection(@"Data Source=.;Initial Catalog=honarmand;Integrated Security=True;Pooling=False");
cmd = new SqlCommand();
ds = new DataSet();
bs = new BindingSource();
}
string code_reshte="";
private void frm_takhasos_honari_Load(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
da = new SqlDataAdapter("SELECT * FROM tbl_grouphonari", con);
da.Fill(ds, "tbl_grouphonari");
bs.DataSource = ds.Tables["tbl_grouphonari"];
cmb_reshtehonari.DataSource = ds.Tables["tbl_grouphonari"];
cmb_reshtehonari.DisplayMember = "reshte_honari";
cmb_reshtehonari.ValueMember = "code_reshte";
con.Close();
}
private void buttonX1_Click(object sender, EventArgs e)
{
DataLayer.tbl_shenasetakhasosi.InsertRow(cmb_resht ehonari.Text,txt_takhasoshonari.Text,txt_shenase.T ext);
}
private void cmb_reshtehonari_SelectedIndexChanged(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
cmd = new SqlCommand("SELECT * FROM tbl_grouphonari where reshte_honari='" + cmb_reshtehonari.Text + "'", con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
code_reshte = dr["code_reshte"].ToString();
}
dr.Close();
labelX1.Text = code_reshte;
}
}
}