PDA

View Full Version : بايند كردن فيلدهابه تكست باكس ها



csharpprogramer88
سه شنبه 18 اسفند 1388, 15:14 عصر
سلام
من در حال طراحي يك برنامه هستم كه در اون از يك گريد بعنوان گريد اصلي و از چند تكست باكس بعنوان نشان دادن جزئيات آن فيلد استفاده مي كنم شيوه اجراي اون به اين صورته كه روي يه سطر از گريد كه كليك مي كنم شماره id اون سطر با يك دستور سلكت در جدول دوم سرچ ميشه و در تكست باكس نشان ميده كه تا اينجاي كار خوب پيش مي ره ولي مشكل اينه كه اگر براي بار دوم بر روي سطر كليك كنم با پيغام زير مواجه ميشم دوستان لطف كنيد خيلي جواب بديد كه خيلي فوريه راستي يكي دوتا فيلد به كومبو بايند ميشه

This causes two bindings in the collection to bind to the same property.
Parameter name: binding
دستور بايند:



txtshoghlid.DataBindings.Add(new Binding("text", ds3, "shoghl.id"));
cmbvazeeatshoghl.DataBindings.Add(new Binding("text", ds3, "shoghl.vazeeatshoghl"));

beh_develop
سه شنبه 18 اسفند 1388, 16:07 عصر
اگه میشه اون بخش ار کد رو نشون بده تا بشه گفت از چیه ، احتمالا هنگام کلیک داری بایند می کنی که با دوم میگه یک کنترل نمی تونه 2 بار بایند شه.

csharpprogramer88
سه شنبه 18 اسفند 1388, 16:42 عصر
txtshoghlid.Text = "";
expandablePanel3.Enabled = true;
da3= new SqlDataAdapter("select * from shoghl where id=" + dataGridViewX1.Rows[dataGridViewX1.CurrentRow.Index].Cells[0].Value.ToString() + "", con);//ريختن اطلاعات در گريد
da3.Fill(ds3,"shoghl");
bs3.DataSource =ds3.Tables["shoghl"];


txtshoghlid.DataBindings.Add(new Binding("text", ds3, "shoghl.id"));
cmbvazeeatshoghl.DataBindings.Add(new Binding("text", ds3, "shoghl.vazeeatshoghl"));


سلام دوست من
اين كد سلكت و هم بايند كردن . بله همين طور كه شما گفتيد داره چون دو بار بايند مي كنه اين ارور را مي ده ولي نمي دونم چطور بايد اين ايراد را بر طرف كنم براي بار اول مشكل نداره

sky_in_iran
سه شنبه 18 اسفند 1388, 17:54 عصر
سلام دوست عزيز
اگه باز مشكلي بود خود برنامت و بزار با بانك تا بهتر بتونن دوستان و اساتيد كمك كنن . اگه كد مشكلي نداشت و كار كرد بعد به جاي 0 اسم جدول و بزار




expandablePanel3.Enabled = true;
int id =convert.toint32( dataGridViewX1.CurrentRow.Cells[0].Value);
da3= new SqlDataAdapter("select * from shoghl where id="+id+",con);
da3.Fill(ds3);
bs3.DataSource =ds3.Tables[0];


موفق باشي

csharpprogramer88
سه شنبه 18 اسفند 1388, 19:11 عصر
دوست عزيز به پست اول دقت كنيد كه چطوري به تكست باكس بايند كردم .

كد شما را هم اضافه كردم ولي ارور زير را ميده

Child list for field shoghl cannot be created.

hakelberfin
چهارشنبه 19 اسفند 1388, 00:28 صبح
سلام
ببین این کار میکنه



txtshoghlid.Text = "";
expandablePanel3.Enabled = true;
da3= new SqlDataAdapter("select * from shoghl where id=" + dataGridViewX1.Rows[dataGridViewX1.CurrentRow.Index].Cells[0].Value.ToString() + "", con);//ريختن اطلاعات در گريد
da3.Fill(ds3,"shoghl");
bs3.DataSource =ds3.Tables["shoghl"];

txtshoghlid.DataBindings.Add("text", ds3.Tables[0], "id");
cmbvazeeatshoghl.DataBindings.Add("text", ds3.Tables[0], "vazeeatshoghl");

FastCode
چهارشنبه 19 اسفند 1388, 06:45 صبح
bs3.DataSource =ds3.Tables["shoghl"];
باید بشه

bs3.DataSource =ds3;
و datamember جدول باید بشه "shoghl".

beh_develop
چهارشنبه 19 اسفند 1388, 06:45 صبح
txtshoghlid.Text = "";
expandablePanel3.Enabled = true;
da3= new SqlDataAdapter("select * from shoghl where id=" + dataGridViewX1.Rows[dataGridViewX1.CurrentRow.Index].Cells[0].Value.ToString() + "", con);//ريختن اطلاعات در گريد
da3.Fill(ds3,"shoghl");
bs3.DataSource =ds3.Tables["shoghl"];


txtshoghlid.DataBindings.Add(new Binding("text", ds3, "shoghl.id"));
cmbvazeeatshoghl.DataBindings.Add(new Binding("text", ds3, "shoghl.vazeeatshoghl"));


سلام دوست من
اين كد سلكت و هم بايند كردن . بله همين طور كه شما گفتيد داره چون دو بار بايند مي كنه اين ارور را مي ده ولي نمي دونم چطور بايد اين ايراد را بر طرف كنم براي بار اول مشكل نداره


این کد رو تو کدوم event چه کنترلی نوشتین؟

csharpprogramer88
چهارشنبه 19 اسفند 1388, 08:03 صبح
این کد رو تو کدوم event چه کنترلی نوشتین؟

dataGridViewX1_CellClick
در پست اول هم گفتم يه چيز تو مايه هاي master\details

csharpprogramer88
چهارشنبه 19 اسفند 1388, 08:13 صبح
سلام
ببین این کار میکنه



txtshoghlid.Text = "";
expandablePanel3.Enabled = true;
da3= new SqlDataAdapter("select * from shoghl where id=" + dataGridViewX1.Rows[dataGridViewX1.CurrentRow.Index].Cells[0].Value.ToString() + "", con);//ريختن اطلاعات در گريد
da3.Fill(ds3,"shoghl");
bs3.DataSource =ds3.Tables["shoghl"];

txtshoghlid.DataBindings.Add("text", ds3.Tables[0], "shoghl.id");
cmbvazeeatshoghl.DataBindings.Add("text", ds3.Tables[0], "shoghl.vazeeatshoghl");



دوست من اين ارور را ميده
Child list for field shoghl cannot be created.
دوستان به اين نكتع توجه كنيد كه من در رويداد كليك گريد اول اين كد را مي نويسم و با كليك اول خوب كار مي كنه ولي در كليك دومي ارور مي ده كه در پست هاي قبل گذاشتم

csharpprogramer88
چهارشنبه 19 اسفند 1388, 08:17 صبح
bs3.DataSource =ds3.Tables["shoghl"];
باید بشه

bs3.DataSource =ds3.Tables["shoghl"];
و datamember جدول باید بشه "shoghl".

دوست من هر دو كد شما يكيه چك كنيد اگر منظورتون چيز ديگه اي هست ممنون ميشم بگيد
با تشكر

slashslash2009
چهارشنبه 19 اسفند 1388, 10:11 صبح
اینم کدش دیگه چی میخوای :

try
{
strSQL = "select * from moshtari where id=@idd";
da = new SqlDataAdapter(strSQL, con);
da.SelectCommand.Parameters.Add("@idd", SqlDbType.Int).Value = Int32.Parse(dataGridView2.CurrentRow.Cells[1].Value.ToString());
ds = new DataSet();
con.Open();
da.Fill(ds, "moshtari");
con.Close();
textBox15.DataBindings.Add(new Binding("Text", ds.Tables["moshtari"], "address"));
label46.DataBindings.Add(new Binding("Text", ds.Tables["moshtari"], "id"));
}
catch { }
textBox15.DataBindings.Clear();
label46.DataBindings.Clear();

sky_in_iran
چهارشنبه 19 اسفند 1388, 12:52 عصر
دوست عزيز اساتيد هرچي كد دادن شما گفتيد مشكل داره براي اينكه زودتر بتونن اساتيد كمكت كنن و مشكلت حل بشه كدو بانك تو بزار تا هم زود و هم مفيد كمك كنن !
شايد مشكل جايه ديگريه !
موفق باشيد

slashslash2009
چهارشنبه 19 اسفند 1388, 13:45 عصر
کدی که گذاشتم مشکلی نداره احتماله زیاد مشکلتون حل میشه در کدهای قبلی که دوستان گذاشته بودن یک نکته رعایت نشده بود یعنی clear کردن بعد از هر انتخاب

csharpprogramer88
چهارشنبه 19 اسفند 1388, 14:34 عصر
کدی که گذاشتم مشکلی نداره احتماله زیاد مشکلتون حل میشه در کدهای قبلی که دوستان گذاشته بودن یک نکته رعایت نشده بود یعنی clear کردن بعد از هر انتخاب

دوست من لطف كردي كد فرستادي ولي متاسفانه مشكل حل نشد با كد شما ارور بوجود نمياد(حتي try راهم برداشتم) ولي فقط براي بار اول خروجي نشان مي ده و براي كليك دوم تغييري نمي كنه كه ظاهرا ايراد از

txtshoghlid.DataBindings.Clear();
كه نمي دانم چيكار كنم
به هر حال من يه پروژه مي فرستم كه اگر لطف كنيد ممنون ميشم چكش كنيد البته كد شمارا در آن بكار نبردم

csharpprogramer88
چهارشنبه 19 اسفند 1388, 14:38 عصر
دوستان عزيز اينم پروژه لطف كنيد و تست كنيد كه وقت ندارم تازه دير هم شده:عصبانی++::ناراحت::گیج::گر ه::گریه::گریه:

csharpprogramer88
چهارشنبه 19 اسفند 1388, 14:39 عصر
دوست عزيز اساتيد هرچي كد دادن شما گفتيد مشكل داره براي اينكه زودتر بتونن اساتيد كمكت كنن و مشكلت حل بشه كدو بانك تو بزار تا هم زود و هم مفيد كمك كنن !
شايد مشكل جايه ديگريه !
موفق باشيد

ازتمام اساتيد متشكرم الان پروژه را گذاشتم

slashslash2009
چهارشنبه 19 اسفند 1388, 15:40 عصر
کد شما خیلی اشکال داره پر از اشکاله ولی اگه میخوای سلول خاصی از گریدویو بریزی در تکست باکس لازم به بایند کردن نیست این کارو بکن :

txtid.Text = dataGridViewX1.CurrentRow.Cells[6].Value.ToString();cell[6] شماره ستونه خودت مشخصش کن مثلا واسه نام و غیره ستونهای گرید ویو از صفر شروع میشن
کدت رو هم اینجوری کن واست درستش کردم

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.Data.SqlClient;

namespace newgride
{
public partial class Form1 : Form
{
private string strSQL;
private SqlConnection con;
private SqlDataAdapter da;
private SqlCommand com;
private DataSet ds;
private void dataGridViewx1_CellClick(object sender, DataGridViewCellEventArgs e)
{
txtid.Text = dataGridViewX1.CurrentRow.Cells[6].Value.ToString();
}

private void Form1_Load(object sender, EventArgs e)
{
con = new SqlConnection();
con.ConnectionString = ("Data Source=.\\sqlexpress;Initial Catalog=honar2;Integrated Security=True");

SqlCommand cmd1 = new SqlCommand("select * from moshakhasat", con);
SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
DataTable dt1 = new DataTable();
da1.Fill(dt1);
dataGridViewX1.DataSource = dt1;
}
}
}

csharpprogramer88
چهارشنبه 19 اسفند 1388, 16:06 عصر
دوست عزيز تشكر
ولي من ميخوام زماني كه روي يكي از سطرهاي گريد اولي (كه در آن اطلاعات جدول مشخصات قرار دارد )كليك كردم id در اون سطر گرفته بشه و با توجه به اين id دو دستور سلكت ديگر در جدول هاي جداي از هم به نام هاي shoghl و tahsilat سلكت بشه و سلكت tahsilat در گريد ريخته مي شه كه با اون هيچ مشكلي ندارم ولي مشكل من مربوط ميشه به سلكت shoghl كه در تكست باكس ها ريخته ميشه كه چون دو بار بايند ميشه ارور مي ده نميدونم توضيح من كامله يا نه


txtid.Text = dataGridViewX1.CurrentRow.Cells[6].Value.ToString();
شما اين كدو فرستادي در صورتي من در گريد اولي فقط مي خوام آيدي اونو بگيرم و در دو جدول متفاوت سرچ مي كنم

slashslash2009
چهارشنبه 19 اسفند 1388, 22:19 عصر
خوب از همون کد بایند من استفاده کن مشکلت حل میشه عینه همون بنویس

Himalaya
پنج شنبه 20 اسفند 1388, 00:47 صبح
اول این قسمت


da = new SqlDataAdapter();
con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=honar2;Integrated Security=True");
cmd = new SqlCommand();
ds = new DataSet();
bs = new BindingSource();

da3 = new SqlDataAdapter();
con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=newgrid;Integrated Security=True");
cmd3 = new SqlCommand();
ds3 = new DataSet();
bs3 = new BindingSource();
da2 = new SqlDataAdapter();
// con2 = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=honar2;Integrated Security=True");
cmd2 = new SqlCommand();
ds2 = new DataSet();
bs2 = new BindingSource();

2 تا کانکشن با اسم con درست کردی (که اولیش باید حذف بشه. چون تو اولی داری به دیتابیس honar2 وصل میشی ، در حالی که همچین دیتابیسی نداری)
و دوم اینکه (مشکل اصلی تون) شما نمیتونید کنترلی که بایند شده رو دوباره بایند کنید. به خاطر همین با کلیک اول اطلاعات به تکست باکسها منتقل میشه و با کلیک دوم برنامه ارور میده... نتیجه اینکه شما قبل از اینکه بخواید تکست باکس ها رو بایند کنید باید اونها رو از حالت بایند خارج کنید
کدهای بایندتون میشه این


txtshoghlid.DataBindings.Clear();
cmbvazeeatshoghl.DataBindings.Clear();
txtnameedare.DataBindings.Clear();
txtmasuliat.DataBindings.Clear();
txtsabeghe.DataBindings.Clear();
cmbnezami.DataBindings.Clear();
txtdaraje.DataBindings.Clear();
txtjaigah.DataBindings.Clear();
txtmahalkhedmat.DataBindings.Clear();
txtmoavenat.DataBindings.Clear();
txtmasooliat.DataBindings.Clear();

txtshoghlid.DataBindings.Add(new Binding("text", ds3, "shoghl.id"));
cmbvazeeatshoghl.DataBindings.Add(new Binding("text", ds3, "shoghl.vazeeatshoghl"));
txtnameedare.DataBindings.Add(new Binding("text", ds3, "shoghl.nameedare"));
txtmasuliat.DataBindings.Add(new Binding("text", ds3, "shoghl.masuliat"));
txtsabeghe.DataBindings.Add(new Binding("text", ds3, "shoghl.sabeghe"));
cmbnezami.DataBindings.Add(new Binding("text", ds3, "shoghl.nezami"));
txtdaraje.DataBindings.Add(new Binding("text", ds3, "shoghl.daraje"));
txtjaigah.DataBindings.Add(new Binding("text", ds3, "shoghl.jaigah"));
txtmahalkhedmat.DataBindings.Add(new Binding("text", ds3, "shoghl.mahalkhedmat"));
txtmoavenat.DataBindings.Add(new Binding("text", ds3, "shoghl.moavenat"));
txtmasooliat.DataBindings.Add(new Binding("text", ds3, "shoghl.masooliat"));

تست شد و جواب داد...