اضافه کردن ردیف به datagridview
سلام.یه چیزی خیلی کلافه ام کرده.یک دیتا گرید ویو دارم که میخام طی یک فرآیند بازگشتی هر بار بهش ردیف های جدید اضافه بشه.من برای اتصال این دیتا گرید ویو از linq استفاده کردم و تنها دستوری که برای این کار بلدم datagrid.datasource است.منتها این دستور محتوای قبلی دیتا گرید رو پاک می کنه ولی من میخام محتوای جدید به انتهای همین گرید ویو اضافه بشه و محتوای قبلی پاک نشه.چطور میشه این کار رو کرد آیا احتیاج به تابع خاصی داره یا در امکانات خود دیتا گرید ویو یا لینک هست؟
برای بهتر فهمیدن کد رو هم میزارم:
protected void treetogrid(TreeNode trn, DataGridView dgv)
{
linqDataContext db = new linqDataContext();
dgv.DataSource = db.kgselect(int.Parse(trn.Name));
foreach (TreeNode tn in trn.Nodes)
{
treetogrid(tn, dgv);
}
}
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
سلام
باید AllowUserToAddRows را در دیتاگرید ویو مساوی True قرار بدی.
this.dataGridView1.AllowUserToAddRows = true
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
نقل قول:
نوشته شده توسط
asghar2008
سلام
باید AllowUserToAddRows را در دیتاگرید ویو مساوی True قرار بدی.
this.dataGridView1.AllowUserToAddRows = true
این رو true کنم بعد از دستور datasource استفاده کنم حل میشه؟
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
فک کنم سوالم رو خوب متوجه نشدید.چون اصلا مشکلم اینه که نمیدونم چطور محتوای قبلی دیتا گرید ویو رو نگه دارم و محتوای جدید رو هم بهش اضافه کنم.
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
دوست عزیز رکورد های شما در بانک ذخیره میشه؟
یا فقط تو خود گرید ویو؟
ایجاد سطر جدید در گرید ویو (این برای اضافه کردن در گریدویو هست نه به بانک)
با استفاده از این کد
Dgrid.Rows.Add("", "", "");
جای "" مقادیرتو بزار .
اضافه کردن به بانک و نمایش در گریدویو
اگه dt (دیتاتیبل) به دیتاسورس DGV وصل هست شما باید رکورد جدید رو به dt اضافه کنید.چون اونموقع اطلاعات قبلی پاک نمیشه.
مثلا اگر ديتا سورس گريدتون ديتا تيبلي با نام dt هست بايد به dt اضافه كنيد:
dt.Rows.Add(2, 8, "asghar2008", true);
اطلاعات بیشتر در این تاپیک ، کلیک کن.
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
رکورد ها توسط دستور این دستور db.kgselect(int.Parse(trn.Name));
فراخوانی می شود.این دستور فقط دو ستون از جدول اصلی دیتا بیس رو بازیابی می کنه.این دو ستون در دیتا گرید ویو نمایش داده میشه و فقط بازیابی میشه اما در جایی از دیتا بیس ذخیره نمیشه.دیتا گرید ویو فقط به دستور گفته شده اتصال داره.
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
نه نمیخام به جدول دیتا بیس اضافه بشه.افزودن به دیتا بیس رو بلدم.اطلاعات گرید ویو از یک جدول دیتا بیس نمیاد بلکه از یک دستور بازیابی میاد.دستور بازیابی توی یک چرخه دایم تکرار میشه و میخام هربار نتایجش در دیتا گرید ویو اضافه بشه.
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
به نظرم شما بیاین یه DataTable بسازید و اونو بدین به DataSource گردیدتون.
بعد رد هر بار که اون تابع اجرا میشه سطر جدید رو به این DataTable اضافه کنید.
اینطوری دیگه سطر جدید اتوماتیک به گرید هم اضافه میشه.
امیدوارم منظورمو متوجه شده باشید.
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
نقل قول:
نوشته شده توسط
morteza271
به نظرم شما بیاین یه DataTable بسازید و اونو بدین به DataSource گردیدتون.
بعد رد هر بار که اون تابع اجرا میشه سطر جدید رو به این DataTable اضافه کنید.
اینطوری دیگه سطر جدید اتوماتیک به گرید هم اضافه میشه.
امیدوارم منظورمو متوجه شده باشید.
میشه توضیح بدین محتوای جدولی که با linq به C# متصل شده روچطور به data table وارد کنم.
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
نقل قول:
نوشته شده توسط
ghasem167
میشه توضیح بدین محتوای جدولی که با linq به C# متصل شده روچطور به data table وارد کنم.
متاسفانه من زیاد با linq کار نکردم ولی مطمئنا میشه اینکار رو کرد.
این خروجی این دستور چیه؟
db.kgselect(int.Parse(trn.Name));
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
نقل قول:
نوشته شده توسط
morteza271
متاسفانه من زیاد با linq کار نکردم ولی مطمئنا میشه اینکار رو کرد.
این خروجی این دستور چیه؟
db.kgselect(int.Parse(trn.Name));
خروجی این دستور بازیابی یک جدول که شامل دو ستون یکی کد کالا و دیگری نام کالا هست.ورودی جدول هم کد گروه هست.یعنی این دستور کد ونام کالاهایی که کد گروهشون به عناون مثال 5 است رو برمی گردونه .
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
نقل قول:
نوشته شده توسط
ghasem167
خروجی این دستور بازیابی یک جدول که شامل دو ستون یکی کد کالا و دیگری نام کالا هست.ورودی جدول هم کد گروه هست.یعنی این دستور کد ونام کالاهایی که کد گروهشون به عناون مثال 5 است رو برمی گردونه .
پس خروجی این دستور یا یه جدولیه یا لیست و یا چیزی مشابه...
که خیلی راحت میتونید داده هاشو به داخل یک دیتاتیبل انتقال بدین...
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
چون با linq اطلاعات رو واکشی و دیتاسورس گریدویو رو تنظیم کردید سطر جدید رو هم به دیتاسورس باید اضافه کنید.
مثال بر اساس LinqToSql :
فرض کنید اطلاعات از یک StoredProcedure به نام StoredProcedure1 واکشی میشه.
using (DataClasses1DataContext db = new DataClasses1DataContext())
{
dataGridView1.DataSource = db.StoredProcedure1().ToList();
}
این SP بعد از اضافه شدن به مدل linq به یک متد تبدیل میشه. این متد یک خروجی از نوع StoredProcedure1Result خواهد داشت که اطلاعات را بعد از واکشی به لیستی از این نوع تبدیل میکنیم(متد tolist این کار را انجام میده).
برای افزودن به این لیست کافیه دیتاسورس گریدویو را بدست آورده و آیتم مورد نظر را به آن اضافه کرد:
List<StoredProcedure1Result> records = dataGridView1.DataSource as List<StoredProcedure1Result>;
StoredProcedure1Result t = new StoredProcedure1Result() { name = "Name", lastname = "LName" };
records.Add(t);
dataGridView1.DataSource = records.ToList();
خیلی خوب بود.ولی من مشکلم رو با کوئری حل کرد.اینجوری:
linqDataContext db = new linqDataContext();
var q = from k in db.kalahas
where k.group_id==int.Parse(trn.Name)
select new {k.kid, k.kname };
foreach (var row in q)
{
dgv.RowCount++;
dgv.Rows[dgv.Rows.Count-1].Cells[0].Value = row.kid;
dgv.Rows[dgv.Rows.Count-1].Cells[1].Value = row.kname;
}
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
چطوری میشه یه سطر به دیتاگرید اظافه کرد بدون ذخیره در دیتابیس؟ برای مثلا پیشنمایش
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
نقل قول:
نوشته شده توسط
www.rayanehkhabar.com
چطوری میشه یه سطر به دیتاگرید اظافه کرد بدون ذخیره در دیتابیس؟ برای مثلا پیشنمایش
سلام
بنظر از DataTable یا Dataset یا list برای پر کردن دیتاگرید استفاده میکنید. دو روش پیش روی شماست
1- روش binding که در اون بدلیل بایند شدن اشیا فوق با دیتا گرید کافیه که شما یه سطر به DataTable یا Dataset یا list اضافه کنید
DataTable Dt_Tbl = new DataTable();
Dt_Tbl.Rows.Add("asd","zxc",....);
DataSet Dt_Set=new DataSet ();
Dt_Set.Tables[0].Rows.Add("asd","zxc",....);
List<Person> listperson = new List<Person>();
listperson.Add(new Person(123,"asd","hff");
2- روش واگذاری مستقیم که یه سطر جدید به دیتا گرید اضافه می کنه
dataGridView1.Rows.Add("asd","zxc",....);
نقل قول: اضافه کردن ردیف به datagridview
جواب نمیده و پیغام خطا میده
4 ضمیمه
نقل قول: اضافه کردن ردیف به datagridview
سلام
تعداد ستون ها باید برابر تعداد پارامترهای ورودی باشه
ضمیمه 132494
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Add(textBox1.Text, textBox2.Text);
}
روش binding که البته با wpf هستش و از یه دیتا بیس میخونه و تو DataTable میریزه و بعد لیستو باهاش پر میکنه دلیلش اینه امکان جستجو بر اساس حروف با استفاده از MvvM سریعتر میشه
listperson.Add(new Classes.Person(_Bind.Rows[i]["Cod_key"].ToString().Trim(),
_Bind.Rows[i]["Nam_Fa"].ToString().Trim()
(;
dataGrid1.ItemsSource = listperson;
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" Grid.Row="9" HorizontalAlignment="Stretch" Margin="0,0,1,1" Name="dataGrid1" VerticalAlignment="Stretch"
CanUserResizeRows="False" FlowDirection="RightToLeft" VerticalGridLinesBrush="#FF56B13B" FontFamily="B Nazanin" FontWeight="Bold"
HorizontalContentAlignment="Right" VerticalContentAlignment="Center" FontSize="13" Background="White" Grid.Column="1"
AlternatingRowBackground="#FFE5E5E5" SelectionChanged="dataGrid1_SelectionChanged" Loaded="dataGrid1_Loaded" Grid.ColumnSpan="2" Grid.RowSpan="2">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path= Cod_key}" Header="کد" Width="auto" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding Path= Nam_Fa}" Header="نام ونام خانوادگی" Width="auto" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
با استفاده از datatable
پر کردن ابتدا با رکورد های بانک
DataTable _Bind = new DataTable();
_Adapter.Fill(_Bind);
dataGrid1.DataContext = _Bind;
پر کردن مجدد بعد از اضافه کردن باسطر دلخواه
_Bind.Rows.Add("123", "Abc");
dataGrid1.DataContext = _Bind;
من به شخصه استفاده از لیست رو ترجیح میدم چون از Mvvm میشه استفاده کرد
لیست اولیه
ضمیمه 132496
لیست در حین جستجو
ضمیمه 132498
نقل قول: اضافه کردن ردیف به datagridview
دقیقا میخوام مثل لیست باکس عمل کنه.
یعنی تکس باکس مستقیم بره تو دیتاگرید.
ListBox.Items.Add(textbox.Text);
تو کد بالا مستقیم عمل میشه واسه گرید ویو همچین امکانی هست؟
نقل قول: اضافه کردن ردیف به datagridview
آره اگه تعداد ستونها برابر یا بیشتر از تعداد ورودیها باشه عمل میکنه و ستون ها رو از چپ به راست پر میکنه
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Add(textBox1.Text, textBox2.Text);
}
البته اگه قبلا با list یا datatable پر شده باشه باید تعداد و نوع ورودیها با نوع فیلد های متناظر list یا datatable یکی باشه
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
نقل قول:
نوشته شده توسط
aliramazani
چطوری میشه یه سطر به دیتاگرید اظافه کرد بدون ذخیره در دیتابیس؟ برای مثلا پیشنمایش
چطوری یه سطر اضافه کنم ولی فقط برای یکی از ستونها داده ارسال بشه
مثلا دستور dgv.rows.add به تمام column ها داده میفرسته ولی من میخوام یه سطر اضافه بشه و فقط به یه ستون داده بده
1 ضمیمه
نقل قول: اضافه کردن ردیف به دیتا گرید ویو
سلام
من اول دیتا گریدم رو با تعداد ستونهای مورد نظر درست می کنم و مثلا اسمشو می زارم dgv
و بعد متدی مینویسم به اسم( BindDataGrid )که دیتا گریدم رو پر کنه , و بعد از هر تغییر اون متد رو فراخوانی می کنم
نکته اول اینکه اطلاعات رو داخل یه لیست مثلا لیست result ذخیره کن . هر بار که اطلاعاتی به لیستت اضافه میشه یا کم میشه یا ویرایش میشه و لیست رو بروز می کنی متد BindDataGrid رو فراخوانی کن
خلاصه متد رو برات می فرستم. من سالهاست از این روش استفاده می کنم و تا حالا مشکلی پیش نیومده. اگه سوالی داشتی باهام تماس بگیر 09001205554
ضمیمه 153850