PDA

View Full Version : سوال: دیتاگرید و اضافه نشدن سطر آخر بصورت خودکار



papeli_83
شنبه 04 آذر 1391, 23:16 عصر
با سلام

من تو پروژم(که یه پروژه محاسباتیه ) تعدادی دیتا گرید ویو دارم این دیتا گرید ها دو کار انجام می دن

1 - اگه طرح ما برای اولین بار بخواد محاسبه بشه بایستی کاربر داده های ورودی مسئله رو وارد کنه و این مقادیر بایستی در جدول های دیتابیس ذخیره بشه

2 - اگه طرح ما قبلا کار شده باشه و کاربر بخواد داده های طرح کار شده رو ببینه , ; داده های ذخیره شده در دیتابیس بایستی در داخل دیتا گرید هامون نشون داده بشه ( البته کاربر می تونه اونا رو ویرایش کنه و اگه خواست اونا رو ذخیره کنه )

حالا مشکل من اینجاست که ذیتا گریدهام باید یه دونه سطر داشته باشن ( در هر دو حالت ) یعنی وقتی کاربر می خواد داده ها رو وارد کنه دیگه بطور خودکار سطر جدیدی ایجاد نشه

من برای این کار اومدم خاصیت AllowUserToAddRows رو برابر False قرار دادم و از دستور DataGridView1.Rows.Add() در رویداد لود فرمم استفاده کردم . اما وقتی پروژمو ران می کنم ارور میده .
( به بایند بودن دیتا گریدها ارور میده و میگه چون دیتا گریدها بایند هستن پس نمیشه سطر اضافه کرد )

از دوستانی که تو این ضمینه کار کردن خواهش می کنم که کمکم کنن

با تشکر

papeli_83
یک شنبه 05 آذر 1391, 09:13 صبح
کسی نیست یه کمکی بکنه!!!!!!!!

dabirsiaghi
یک شنبه 05 آذر 1391, 10:13 صبح
یه مقدار بیشتر توضیح بدین کمی نامفهومه

papeli_83
یک شنبه 05 آذر 1391, 10:34 صبح
یه مقدار بیشتر توضیح بدین کمی نامفهومه.

سلام دوست عزیز

ببین من یه برنامه محاسباتی دارم که کاربر برای کار کردن با اون با دوحالت روبرو می شه
1 - داده های ورودی اونو کاربر توی یه سری دیتا گرید ویو وارد می کنه وبعد برنام رو ران می کنه و جواب وداده های ورودی رو توی بانک ذخیره می کنه
2- توی قسمت آرشیو میگرده و اون طرحی رو که مشابهه طرح محاسباتیش هستش رو پیدا میکنه و وقتی اون طرح رو باز میکنه داده های ورودی اون داخل دیتا گریدهامون میشیینه وکاربر بایستی بتونه امکان ویرایش رو داشته باشه

خب تا اینجا نحوه کارکرد برناممو گفتم ( امیدوارم واضح گفته باشم )

حالا مشکل من اینجاست که دیتا گریدهام بایستی یه سطر داشته باشن , یعنی وقتی کاربر داره اطلاعات رو وارد می کنه یا ویرایش می کنه , بطور خودکار سطر خالی به دیتا گریدهام اضافه نشه(در حالت عادی وقتی شما دارید اطلاعات رو وارد می کنید یه سطر خالی بطور پیش فرض به دیتا گریدتون اضافه می شه و من می خوام که اون سطر خالی اضافه نشه )

papeli_83
یک شنبه 05 آذر 1391, 23:10 عصر
کسی نیستتتتتتتتتتتتتتتتتتتتتت تتتتتتتتتتتتتتتتتتتتتتتتت تتتتتتت

gilsoft
دوشنبه 06 آذر 1391, 01:33 صبح
حالا مشکل من اینجاست که دیتا گریدهام بایستی یه سطر داشته باشن , یعنی وقتی کاربر داره اطلاعات رو وارد می کنه یا ویرایش می کنه , بطور خودکار سطر خالی به دیتا گریدهام اضافه نشه(در حالت عادی وقتی شما دارید اطلاعات رو وارد می کنید یه سطر خالی بطور پیش فرض به دیتا گریدتون اضافه می شه و من می خوام که اون سطر خالی اضافه نشه )

سلام دوست عزیز

فکر کنم با کد زیر مشکل شما حل بشه ...

Dgv.AllowUserToAddRows = False

موفق باشید

papeli_83
دوشنبه 06 آذر 1391, 02:17 صبح
سلام دوست عزیز

فکر کنم با کد زیر مشکل شما حل بشه ...

Dgv.AllowUserToAddRows = False

موفق باشید

با سلام وبا تشکر از شما
من خودم اولین کاری که کردم همین کد شما بود
ولی وقتی کاربر قراره پروژه جدیدی رو کار کنه , با این کد شما دیگه سطری نشون داده نمیشه تا بتونه داده های ورودی رو وارد کنه!!!!!

فرید نجفلو
دوشنبه 06 آذر 1391, 03:12 صبح
سلام
من نظرم اینه که شما به جای اضافه کردن سطر به گرید اوت رو مستقیم به دیتابیس اضافه و بعد گرید رو رفرش کنید

gilsoft
دوشنبه 06 آذر 1391, 03:12 صبح
ولی وقتی کاربر قراره پروژه جدیدی رو کار کنه , با این کد شما دیگه سطری نشون داده نمیشه تا بتونه داده های ورودی رو وارد کنه!!!!!

در اینصورت از کد زیر استفاده کن :

Dgv.AllowUserToAddRows = False
Dgv.Rows.Add()

دوست عزیز من مطمئنم که میتونم مشکل شما رو حل کنم (یعنی دقیقا گرفتم که چی میخوای)

از کد بالا استفاده کن .. اما فکر کنم باید کد سطر 2 رو تو یه Event قرار بدی ....

اگه مشکل حل نشد .. فکر کنم باید یه قطه کد نمونه بزاری ..

papeli_83
دوشنبه 06 آذر 1391, 12:59 عصر
سلام
من نظرم اینه که شما به جای اضافه کردن سطر به گرید اوت رو مستقیم به دیتابیس اضافه و بعد گرید رو رفرش کنید

با سلام وبا تشکر از شما

میشه یه خورده بیشتر توضیح بدین من متوجه منظور شما نشدم

papeli_83
دوشنبه 06 آذر 1391, 13:08 عصر
در اینصورت از کد زیر استفاده کن :

Dgv.AllowUserToAddRows = False
Dgv.Rows.Add()

دوست عزیز من مطمئنم که میتونم مشکل شما رو حل کنم (یعنی دقیقا گرفتم که چی میخوای)

از کد بالا استفاده کن .. اما فکر کنم باید کد سطر 2 رو تو یه Event قرار بدی ....

اگه مشکل حل نشد .. فکر کنم باید یه قطه کد نمونه بزاری ..

مرسی از توجه شما دوست عزیز

من همین کاری که شما گفتید رو ( همونطور که تو پست اول گفتم ) انجام دادم البته تو رویداد DataBindingComplete ولی به متصل بودن به جدول ارور می داد , ( یعنی اینکه برای اضافه کردن سطر نبایستی به جدول متصل دیتابیس متصل باشی )

والا بدجوری گیر کردم و دیگه راهی به ذهنم نمیرسه !

dabirsiaghi
دوشنبه 06 آذر 1391, 13:55 عصر
خیلی حول حولکی شد خیلی ظاهرش جالب نیست ولی کار میکنه
95616
وقت کردن توضیح میدم جریان رو
یه سوال شما میخواهید عملیات دیتا فقط روی گرید انجام شود ؟

papeli_83
دوشنبه 06 آذر 1391, 23:44 عصر
خیلی حول حولکی شد خیلی ظاهرش جالب نیست ولی کار میکنه
95616
وقت کردن توضیح میدم جریان رو
یه سوال شما میخواهید عملیات دیتا فقط روی گرید انجام شود ؟

با سلام وتشکر از شما دوست عزیز

خیلی ممنونم بخاطر وقتی که گذاشتین
اما من نه C# بلدم و نه Linq در نتیجه از کد شما ( بعداز یه ساعت ) چیزی سر در نیووردم خواهشا اگه میشه با توجه به توضیحاتی که تو پستای بالا دادم یه جوری راهنمایی کنید که منم متوجه بشم
بدجوری گیر کردم

با تشکر

papeli_83
دوشنبه 06 آذر 1391, 23:47 عصر
یه سوال شما میخواهید عملیات دیتا فقط روی گرید انجام شود ؟

بله من کلا تو برنامم داده های ورودی رو تو دیتا گرید می ریزم ( بجای استفاده از تعداد زیادی تکست باکس )

papeli_83
سه شنبه 07 آذر 1391, 14:43 عصر
با سلام
برنامه من از یه چیزی تو مایه های برنامه پایین هستش ( نمی دونم چرا نمی تونم فایل رو اتچ کنم)

Imports System.Data.OleDb
Public Class Form1
Dim cnnstring As String = "provider=microsoft.jet.oledb.4.0;data source=bank.mdb;"
Dim ad As OleDbDataAdapter
Dim dt As New DataTable
Dim cmdb As OleDbCommandBuilder
Dim cnn As New OleDbConnection(cnnstring)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
loaddata()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Try
ad.Update(dt) 'this methode can reflect all changes e.g insert,delete and edit into database
cnn.Close()
MsgBox("Done !", MsgBoxStyle.Information)
loaddata()
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Exclamation)
End Try
End Sub
Sub loaddata()
dt.Clear()
ad = New OleDbDataAdapter("Select * from Table1", cnnstring)
cmdb = New OleDbCommandBuilder(ad) 'this object can make sql command for every change in data table
ad.Fill(dt)
grdAuthorTitles.DataSource = dt
End Sub
End Class
فقط تنها مشکل من وجود سطر خالی , موقع وارد کردن اطلاعات هستش

از دوستانی که تو این ضمینه کار کردن خواهش می کنم کمکم کنن بدجوری گیر کردم ( از توضیحاتی که دوستان تو پست های بالا دادن ممنونم مخصوصا آقای dabirsiaghi ولی نتونستم ازش استفاده کنم )

{ grdAuthorTitles اسم دیتاگردمه و Button4 دکمه ثبت تغییراته }