PDA

View Full Version : سوال: اضافه کردن رکورد به انتهای DataGrid View جهت جمع کردن مقادیر ستونها



mj_nokhost
پنج شنبه 24 اسفند 1391, 00:08 صبح
سلام
شب همگی بخبر .
چه جوری میشه DataGrid View رو یه کاری کرد که مثل grid داخل تصویر انتهای هر ستون جمع مقادیر اون
ستون رو داشته باشیم ؟؟

یه سوال دیگه ام دارم 101403
چه جوری میشه با غلطک موس بین رکوردها حرکت کرد ؟؟

mj_nokhost
پنج شنبه 24 اسفند 1391, 12:03 عصر
یعنی هیچ کی نیست بتونخ منو کمک کنه ؟؟

morrning
جمعه 25 اسفند 1391, 09:44 صبح
datagriadview1.rows.add(datarow)

shahryari
جمعه 25 اسفند 1391, 10:16 صبح
شما ميتوانيد از تكست باكس معمولي استفاده كنيد و به صورت دقيق به انتهاي ديتا گريد بجينيد
منتها بايد خاصيت size able ستون ها را برابر false قراردهيد كه كاربر نتواند اندازه ستون ها را تغيير دهد

shahryari
جمعه 25 اسفند 1391, 10:58 صبح
چه جوری میشه با غلطک موس بین رکوردها حرکت کرد ؟؟
در رويداد MouseWheel كد تون رو بنويسيد

mj_nokhost
جمعه 25 اسفند 1391, 14:27 عصر
شما ميتوانيد از تكست باكس معمولي استفاده كنيد و به صورت دقيق به انتهاي ديتا گريد بجينيد
منتها بايد خاصيت size able ستون ها را برابر false قراردهيد كه كاربر نتواند اندازه ستون ها را تغيير دهد

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

mj_nokhost
جمعه 25 اسفند 1391, 14:29 عصر
در رويداد MouseWheel كد تون رو بنويسيد

خب بعد تشخیص این که غلطک و رو به بالا چرخیده یا رو به پایین چی میشه ؟

mahsa.admin
شنبه 26 اسفند 1391, 07:50 صبح
برای جمع کردن ستون
Static sum_col As Integer = 0
For i As Integer = 0 To dgv.Rows.Count - 1

sum_col += Val(dgv.Item("price_gv", i).Value)

Next
sum_col =0

MOR_MS
شنبه 26 اسفند 1391, 18:49 عصر
باسلام
دوست عزيز شما ميتونيد از دوتا گريد استفاده كنيد
من توي برنامه حسابداي شركت كه با دلفي نوشته شده بود همچين سندي را با دوتا گريد درست كرده بودنند من خودم براي دفترچه تلفن دارم همين كار را انجام ميدم ولي بجاي جمع مبلغ توي سند يك گريد در بالا گريد اصلي گذاشتم براي جستجو وقتي گريد اصلي با اطلاعات پر ميشه گريد جستجو هم چند رديف خالي با سايزهاي ستون اصلي درست ميشه و فقط يه مشكل توي اسكوربار دارم كه در اين پست (http://barnamenevis.org/showthread.php?384391-هماهنگي-چند-scrollbar-ديتا-گريد-با-يك-scrollbar-) نوشتم
اگر بدرد خورد به من هم كمك كن:قلب:

mj_nokhost
شنبه 26 اسفند 1391, 21:47 عصر
برای جمع کردن ستون
Static sum_col As Integer = 0
For i As Integer = 0 To dgv.Rows.Count - 1

sum_col += Val(dgv.Item("price_gv", i).Value)

Next
sum_col =0



مرسی ولی این جواب سوال من نیست
این کدی که شما نوشتی
جمع مقادیر ستون رو برمیگردونه
من میخوام یه جوری یه ردیف به انتهای dgv اضافه کنم و بعد این مقادیر رو اونجا نشون بدم .

mj_nokhost
شنبه 26 اسفند 1391, 21:50 عصر
باسلام
دوست عزيز شما ميتونيد از دوتا گريد استفاده كنيد
من توي برنامه حسابداي شركت كه با دلفي نوشته شده بود همچين سندي را با دوتا گريد درست كرده بودنند من خودم براي دفترچه تلفن دارم همين كار را انجام ميدم ولي بجاي جمع مبلغ توي سند يك گريد در بالا گريد اصلي گذاشتم براي جستجو وقتي گريد اصلي با اطلاعات پر ميشه گريد جستجو هم چند رديف خالي با سايزهاي ستون اصلي درست ميشه و فقط يه مشكل توي اسكوربار دارم كه در اين پست (http://barnamenevis.org/showthread.php?384391-هماهنگي-چند-scrollbar-ديتا-گريد-با-يك-scrollbar-) نوشتم
اگر بدرد خورد به من هم كمك كن:قلب:

من خودم کلی حرکت ردم رو این قضیه
ولی مثل اینکه یه جورایی نمیشه :(
...

mahsa.admin
شنبه 26 اسفند 1391, 22:53 عصر
یک نمونه خیلی ساده برای اضافه کردن جمع در اخرین ردیف در گرید امیدوارم منظورتون این باشه
http://uploadtak.com/images/g583_WindowsApplication3.rar

MOR_MS
شنبه 26 اسفند 1391, 22:55 عصر
باسلام
من با بدست آوردن انديسكهاي هر ستون گريد اصلي يا جستجو عرض آن ستون را بدست مي اورم و با افزايش يا كاهش طول آن طول گريد جستجو و يا بلعكس طول ستون گريد اصلي را تغير ميدم انطوري كار براگر طول هركدام از ستونهاي ديتاگريد را تغيير دهد طول ستون ديتا گريد دوم هم تغير ميكند
حالا شما ميتونين براي جمع استفاده كنيد و باكد دوستمون مقدارش را در ستون مورد نظر بريزيد

MOR_MS
شنبه 26 اسفند 1391, 22:58 عصر
دوست عزيز اينطوي با هربار جمع زدن يك رديف با جمع مبلغ هاي بالاتر خود اضافه مي شه

MOR_MS
شنبه 26 اسفند 1391, 23:29 عصر
101559سلام
من كار دوستمونو كمي تغير دادم بدردت ميخوره يا نه

xxnagin
شنبه 26 اسفند 1391, 23:29 عصر
سلام
این همونی که میخوای

http://social.msdn.microsoft.com/forums/en-US/winforms/thread/41e91c53-4e12-49b1-ac6d-84b696541f7f

Private dt As New DataTable()
Private tb As New TextBox()
Private lb As New Label()
Private Sub DGVWithTotal_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
dt.Columns.Add("aa")
dt.Columns.Add("bb", GetType(Integer))
For i As Integer = 1 To 10
dt.Rows.Add("aa" + i.ToString(), i * 3)
Next
Me.DataGridView1.DataSource = dt
lb.Text = "Total"
lb.Height = tb.Height
lb.AutoSize = False
lb.TextAlign = ContentAlignment.MiddleCenter
Dim X As Integer = Me.DataGridView1.GetCellDisplayRectangle(0, -1, True).Location.X
lb.Width = Me.DataGridView1.Columns(0).Width + X
lb.Location = New Point(0, Me.DataGridView1.Height - tb.Height)
Me.DataGridView1.Controls.Add(lb)
tb.Width = Me.DataGridView1.Columns(1).Width
X = Me.DataGridView1.GetCellDisplayRectangle(1, -1, True).Location.X
tb.Location = New Point(X, Me.DataGridView1.Height - tb.Height)
Me.DataGridView1.Controls.Add(tb)
AddHandler Me.DataGridView1.CellPainting, AddressOf DataGridView1_CellPainting
AddHandler Me.DataGridView1.CellEndEdit, AddressOf DataGridView1_CellEndEdit
Dim sum As Integer = 0
For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1
sum += Convert.ToInt32(Me.DataGridView1(1, i).Value)
Next
tb.Text = sum.ToString()
End Sub
Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs)
If e.ColumnIndex = 1 Then
'calculate the sum total
Dim sum As Integer = 0
For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1
sum += Convert.ToInt32(Me.DataGridView1(1, i).Value)
Next
tb.Text = sum.ToString()
End If
End Sub
Private Sub DataGridView1_CellPainting(ByVal sender As Object, ByVal e As DataGridViewCellPaintingEventArgs)
Dim X As Integer = Me.DataGridView1.GetCellDisplayRectangle(0, -1, True).Location.X
lb.Width = Me.DataGridView1.Columns(0).Width + X
lb.Location = New Point(0, Me.DataGridView1.Height - tb.Height)
tb.Width = Me.DataGridView1.Columns(1).Width
X = Me.DataGridView1.GetCellDisplayRectangle(1, -1, True).Location.X
tb.Location = New Point(X, Me.DataGridView1.Height - tb.Height)
End Sub

mj_nokhost
یک شنبه 27 اسفند 1391, 00:33 صبح
سلام
این همونی که میخوای

http://social.msdn.microsoft.com/forums/en-US/winforms/thread/41e91c53-4e12-49b1-ac6d-84b696541f7f

Private dt As New DataTable()
Private tb As New TextBox()
Private lb As New Label()
Private Sub DGVWithTotal_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
dt.Columns.Add("aa")
dt.Columns.Add("bb", GetType(Integer))
For i As Integer = 1 To 10
dt.Rows.Add("aa" + i.ToString(), i * 3)
Next
Me.DataGridView1.DataSource = dt
lb.Text = "Total"
lb.Height = tb.Height
lb.AutoSize = False
lb.TextAlign = ContentAlignment.MiddleCenter
Dim X As Integer = Me.DataGridView1.GetCellDisplayRectangle(0, -1, True).Location.X
lb.Width = Me.DataGridView1.Columns(0).Width + X
lb.Location = New Point(0, Me.DataGridView1.Height - tb.Height)
Me.DataGridView1.Controls.Add(lb)
tb.Width = Me.DataGridView1.Columns(1).Width
X = Me.DataGridView1.GetCellDisplayRectangle(1, -1, True).Location.X
tb.Location = New Point(X, Me.DataGridView1.Height - tb.Height)
Me.DataGridView1.Controls.Add(tb)
AddHandler Me.DataGridView1.CellPainting, AddressOf DataGridView1_CellPainting
AddHandler Me.DataGridView1.CellEndEdit, AddressOf DataGridView1_CellEndEdit
Dim sum As Integer = 0
For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1
sum += Convert.ToInt32(Me.DataGridView1(1, i).Value)
Next
tb.Text = sum.ToString()
End Sub
Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs)
If e.ColumnIndex = 1 Then
'calculate the sum total
Dim sum As Integer = 0
For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1
sum += Convert.ToInt32(Me.DataGridView1(1, i).Value)
Next
tb.Text = sum.ToString()
End If
End Sub
Private Sub DataGridView1_CellPainting(ByVal sender As Object, ByVal e As DataGridViewCellPaintingEventArgs)
Dim X As Integer = Me.DataGridView1.GetCellDisplayRectangle(0, -1, True).Location.X
lb.Width = Me.DataGridView1.Columns(0).Width + X
lb.Location = New Point(0, Me.DataGridView1.Height - tb.Height)
tb.Width = Me.DataGridView1.Columns(1).Width
X = Me.DataGridView1.GetCellDisplayRectangle(1, -1, True).Location.X
tb.Location = New Point(X, Me.DataGridView1.Height - tb.Height)
End Sub


خیلی ممنونم
خیلی راه حل خوبی بود
ولی اگه تعداد ستون ها زیاد باشه و پایscroll bar بیاد وسط این کنترلا پشت scroll bars مخفی میشن !
به نطرتون چی کار باید کرد ؟

xxnagin
یک شنبه 27 اسفند 1391, 07:44 صبح
اگه دیده باشی از لیبل و تکسباکس استفاده کرده
از این استفاده کن تو فرم لود بذار
برای اسکرول بار هم که دیگه نمیشه کاریش کرد چون الان جزو خود datagrid هستش دیگه

lb.BringToFront()
tb.BringToFront()