簡體   English   中英

如何將單擊事件設置為行中的所有單元格? Gridview Winforms Devexpress

[英]How to set click Event to all cells in a Row ? Gridview Winforms Devexpress

我有Gridview,我想在行的所有單元格上設置單擊事件嗎? 如何完成我的任務?

我嘗試了這段代碼,但是當我雙擊該單元格時,新表單將出現在當前表單的“后退” /“后​​面”。 如何在正面顯示它?

 private void gridView2_DoubleClick(object sender, EventArgs e)
    {
        GridHitInfo celclick = gridView2.CalcHitInfo(gridControl2.PointToClient(Control.MousePosition));

        if (celclick.InRow)
        {

        }
    }

請幫我。

我這里沒有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); };
     }
 }

使用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; }
}

解決方法如下:

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");

    }

我以這種方式解決了問題。 感謝大家的寶貴幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM