我有Gridview,我想在一行中的所有单元格上设置click事件?如何完成我的任务?
我试过这段代码,但是当我双击单元格时,新表格会出现在当前表格的后面/后面。如何在正面显示它?
private void gridView2_DoubleClick(object sender, EventArgs e)
{
GridHitInfo celclick = gridView2.CalcHitInfo(gridControl2.PointToClient(Control.MousePosition));
if (celclick.InRow)
{
}
}
请帮帮我。
答案 0 :(得分:2)
我这里没有Visual Studio来测试它,但我认为它应该是这样的:
foreach(GridViewRow row in gridView2.Rows)
{
//Here you need something to get the cells out of row
cell.Click += (s, e) => { myClickEvent(c); };
}
祝你好运
编辑:试试这个:
foreach(GridViewRow row in gridView2.Rows)
{
foreach (DataControlFieldCell cell in row.Cells)
{
cell.Click += (s, e) => { myClickEvent(c); };
}
}
答案 1 :(得分:2)
使用GridView.RowCellClick事件,如下所示:
gridControl1.DataSource = new List<Person> {
new Person(){ Name="John Smith"},
new Person(){ Name="Mary Smith"}
};
gridView1.OptionsBehavior.Editable = false; // disable editing
gridView1.RowCellClick += gridView1_RowCellClick;
//...
void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) {
if(e.Clicks == 2) { // Double Click
object cellValue = e.CellValue;
//do some stuff
}
}
//...
class Person {
public string Name { get; set; }
}
答案 2 :(得分:0)
以下是解决方案:
DataTable dt = new DataTable();
private void B_Click(object sender, EventArgs e)
{
Button bt = (Button)sender;
int productId = (int)bt.Tag;
AddProductDataContext db = new AddProductDataContext();
decimal Quantity;
decimal.TryParse(txtCalculator.Text, out Quantity);
var results = from inv in db.Inventories
where inv.RecId == productId
select new
{
inventoryName = inv.InventoryName,
Quantity,
Total = Quantity * inv.InventoryPrice
};
foreach (var x in results)
{
DataRow newRow = dt.NewRow();
newRow.SetField("inventoryName", x.inventoryName);
newRow.SetField("Quantity", x.Quantity);
newRow.SetField("Total", x.Total);
dt.Rows.Add(newRow);
}
gridControl1.DataSource = dt;
}
private void SaleScreen_Load(object sender, EventArgs e)
{
dt.Columns.Add("inventoryName");
dt.Columns.Add("Quantity");
dt.Columns.Add("Total");
}
我以这种方式解决了这个问题。感谢大家的宝贵帮助。