PDA

View Full Version : سوال: دادن مقدار به datagrid بایند شده



top7news
دوشنبه 30 اردیبهشت 1387, 18:19 عصر
با سلام
من میخوام توی یک دیتا گرید بایند شده توی یکی از ستون ها یه مقداری رو درج کنم که این مقدار به صورت متغیر ممکنه از یه تکست باکس یا دیتا گرید دیگه بیاد.
میشه منو راهنمایی کنید که چه طور این کار و بکنم ؟؟ اگه با ارائه کد منو راهنمایی کنین ممنون میشم

smt_414
دوشنبه 30 اردیبهشت 1387, 18:25 عصر
سلام

در واقع می خواید مقداری رو در یکی از سلول ها قرار بدهید
این مطلب به عناوین مختلف چندین بار مطرح شده
شما با جستجو می تونید به جواب سوالتون برسید
(البته امیدوارم در این چند روز که نیومدم ، جستجو سایت بهتر شده باشه :لبخند:)


موفق باشید

top7news
دوشنبه 30 اردیبهشت 1387, 22:04 عصر
سلام
ممنون ار توجهتون
البته من نمیخوام توی یکی از سلولهای یه دیتا گرید معمولی مقدار دهی کنم بلکه توی یه دیتا گرید بایند شده این کارو میخوام انجام بدم.
چندتا راه رو امتحان کردم و تغییری توی اون فیلدی که میخوام داده نمیشه ، اگه بازم میگین جوابم هست ممنون میشم بگین با چه عنوانی جستجو کنم.

علیرضا مداح
سه شنبه 31 اردیبهشت 1387, 08:10 صبح
سلام دوست عزیز،
اگر دیتاسورس شما دیتاتیبل است، بهترین راه اضافه کردن یک ستون موقفی به آن و سپس بایند کردن دیتاتیبل به دیتاگریدویو است ...
ولی برای اضافه کردن DataGridviewColumn از نوع Unbound به دیتاگریدویوی بایند شده باید ابتدا پروپرتی مVirtualMode مربوط به دیتاگریدویو را بر روی True قرار دهید ،
مثالی از MSDN :


using System.IO;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
using System;
public class VirtualModeDemo : Form
{
DataGridView dataGridView1 = new DataGridView();
public VirtualModeDemo()
: base()
{
Text = "DataGridView virtual-mode demo (cell-level commit scope)";
dataGridView1.NewRowNeeded +=
new DataGridViewRowEventHandler(dataGridView1_NewRowNe eded);
dataGridView1.RowsAdded +=
new DataGridViewRowsAddedEventHandler(dataGridView1_Ro wsAdded);
dataGridView1.CellValidating +=
new DataGridViewCellValidatingEventHandler(dataGridVie w1_CellValidating);
dataGridView1.CellValueNeeded +=
new DataGridViewCellValueEventHandler(dataGridView1_Ce llValueNeeded);
dataGridView1.CellValuePushed +=
new DataGridViewCellValueEventHandler(dataGridView1_Ce llValuePushed);
Controls.Add(dataGridView1);
dataGridView1.VirtualMode = true;
dataGridView1.AllowUserToDeleteRows = false;
dataGridView1.Columns.Add("Numbers", "Positive Numbers");
dataGridView1.Rows.AddCopies(0, initialSize);
}
bool newRowNeeded;
private void dataGridView1_NewRowNeeded(object sender,
DataGridViewRowEventArgs e)
{
newRowNeeded = true;
}
const int initialSize = 5000000;
int numberOfRows = initialSize;
private void dataGridView1_RowsAdded(object sender,
DataGridViewRowsAddedEventArgs e)
{
if (newRowNeeded)
{
newRowNeeded = false;
numberOfRows = numberOfRows + 1;
}
}
#region "data store maintance"
const int initialValue = -1;
private void dataGridView1_CellValueNeeded(object sender,
DataGridViewCellValueEventArgs e)
{
if (store.ContainsKey(e.RowIndex))
{
// Use the store if the e value has been modified
// and stored.
e.Value = store[e.RowIndex];
}
else if (newRowNeeded && e.RowIndex == numberOfRows)
{
if (dataGridView1.IsCurrentCellInEditMode)
{
e.Value = initialValue;
}
else
{
// Show a blank value if the cursor is just resting
// on the last row.
e.Value = String.Empty;
}
}
else
{
e.Value = e.RowIndex;
}
}
private void dataGridView1_CellValuePushed(object sender,
DataGridViewCellValueEventArgs e)
{
store.Add(e.RowIndex, int.Parse(e.Value.ToString()));
}
#endregion
private Dictionary<int, int> store = new Dictionary<int, int>();
private void dataGridView1_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
dataGridView1.Rows[e.RowIndex].ErrorText = "";
int newInteger;
// Don't try to validate the 'new row' until finished
// editing since there
// is not any point in validating its initial value.
if (dataGridView1.Rows[e.RowIndex].IsNewRow) { return; }
if (!int.TryParse(e.FormattedValue.ToString(),
out newInteger) || newInteger < 0)
{
e.Cancel = true;
dataGridView1.Rows[e.RowIndex].ErrorText = "the value must be a non-negative integer";
}
}
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new VirtualModeDemo());
}
}

top7news
سه شنبه 31 اردیبهشت 1387, 19:51 عصر
خیلی ممنون آقای مداح عزیز
در اولین فرصت امتحان میکنم این گزینه VirtualMode رو
فکر کنم اگه من این پروژه رو 20 بگیرم باید 12 نمره اش رو بدم به شما و دوستای خوبم تو سایت برنامه نویس
بازم ممنون