在WPF中动态地在Datagrid单元格中添加Combobox

时间:2013-04-20 18:45:13

标签: wpf datagrid

我正在使用WPF开发一个应用程序,该应用程序的一部分涉及从三个excel工作表中提取和合并数据并在datagrid中显示。现在,如果datagrid中的一行有一个与多个应用程序对应的队列,那么它将显示一个组合框,通过查找该excel表中的对应队列名称,将从另一个Excel工作表中提取其项目。

我之前在ASP.NET中使用了相同的功能,使用以下代码很容易实现:

    for (int i = 0; i < dt.Rows.Count; i++)
  {
    //Filling datatable dsq from excel sheet
    //dsq contains the data where it is found out how many applications are there for               
   //ith row in Gridview

     count[i] = dsq.Tables[0].Rows.Count;

     foreach (GridViewRow row in gvApplications.Rows)
     {

     // Transferring gridview rows to a datatable
     if (row.Cells[0].Text.Trim().Equals(dt.Rows[i][0].ToString().Trim()))
       {
    //Dropdownlist is added only when no. of applications for each queue , i.e. , 
    /count[i] is greater than 1 , else level control is added.

         if (count[i] > 1)
            {
               DropDownList drp = new DropDownList();
               drp.DataSource = dsq.Tables[0];
                drp.DataTextField = "Application Name";
                drp.DataValueField = "Application Name";
                drp.DataBind();
               row.Cells[7].Controls.Add(drp);
             }
          }
           else
          {
             Label l = new Label();
            l.Text = dsq.Tables[0].Rows[0][0].ToString().Trim();
             l.ID = "label" + row.RowIndex.ToString();
            row.Cells[7].Controls.Add(l);

           }

                        }

现在我想在WPf中使用相同的功能。请帮助我。

1 个答案:

答案 0 :(得分:2)

您可以在DataGridTemplateColumn里面使用ContentControl DataTemplateSelector。{/ p>