2010-10-07 71 views
3

我正在用C#开发移动应用程序。我想在数据网格控件&的每一行的开始处动态添加复选框控件,这取决于我想要触发事件的特定复选框选择。我想添加复选框列&基于任何特定复选框的选择,我想在该复选框选定行上触发事件。我正在使用下面的代码。如何在datagrid控件的每一行的开头添加复选框控件?

private void ShowRegistrationKeyDetails_Load(object sender, EventArgs e) 
     { 
      GridHeight = 40; 
      SQLiteDataReader SQLiteDrKeyObj = null; 
      DataTable dt = new DataTable(); 
      DataManager DataMgrObj = new DataManager(); 
      //int KeyID = Cust_ID; 
      //string Client_Key1 = Client_Key; 
      int KeyID = Selected_Customer_ID; 
      //string Client_Key = Selected_Client_Key; 

      SQLiteDrKeyObj = DataMgrObj.getRegistrationKey(KeyID); 
      dt.Load(SQLiteDrKeyObj); 
      //dt.Columns.Add(new DataColumn("Select", typeof(Boolean))); 

      RegKeyInfodataGrid.DataSource = dt; 

      SizeColumns(RegKeyInfodataGrid);    
      RegKeyInfodataGrid.Height = GridHeight; 

     } 

     protected void SizeColumns(DataGrid grid) 
     { 
      //grid.Controls.Add(new CheckBox()); 


      Graphics g = CreateGraphics(); 


      DataTable dataTable = (DataTable)grid.DataSource; 


      //DataColumn dtcCheck = new DataColumn("IsMandatory");//create the data   
      ////column object with the name 
      //dtcCheck.DataType = System.Type.GetType("System.Boolean");//Set its 
      ////data Type  
      //dtcCheck.DefaultValue = false;//Set the default value 
      //dataTable.Columns.Add(dtcCheck);//Add the above column to the 
      //Data Table 
      //Set the Data Grid Source as the Data Table createed above  
      //grid.DataSource = dataTable1; 
      // set style property when first time the grid loads, next time onwards // it will maintain its property  


      DataGridTableStyle dataGridTableStyle = new DataGridTableStyle(); 

      dataGridTableStyle.MappingName = dataTable.TableName; 

      int RowCount = dataTable.Rows.Count; 
      //foreach(




      foreach (DataColumn dataColumn in dataTable.Columns) 
      { 
       int maxSize = 0;    
       SizeF size = g.MeasureString(
           dataColumn.ColumnName, 
           grid.Font 
          ); 

       if (size.Width > maxSize) 
        maxSize = (int)size.Width; 


       //grid.Controls.Add(new CheckBox()); 

       foreach (DataRow row in dataTable.Rows) 
       { 
        size = g.MeasureString(
           row[dataColumn.ColumnName].ToString(), 
           grid.Font 
         ); 

        if (size.Width > maxSize)      
         maxSize = (int)size.Width; 

        // AutoResize DataGrid Control 
        string Act_Date = dataColumn.ColumnName; 
        if (Act_Date == "Activation_Date") 
        { 
         GridHeight = GridHeight + 17; 

         //CheckBox chk = new CheckBox(); 
         //chk.Location = new Point(20, 30); 
         //this.Controls.Add(chk); 
         //dataTable.Rows.Add(new CheckBox()); 
        } 

       }     

       DataGridColumnStyle dataGridColumnStyle = new DataGridTextBoxColumn(); 
       dataGridColumnStyle.MappingName = dataColumn.ColumnName; 
       dataGridColumnStyle.HeaderText = dataColumn.ColumnName; 
       dataGridColumnStyle.Width = maxSize + 5; 
       dataGridTableStyle.GridColumnStyles.Add(dataGridColumnStyle); 
      } 
      grid.TableStyles.Add(dataGridTableStyle); 

      g.Dispose(); 
     } 

     private void BackmenuItem_Click(object sender, EventArgs e) 
     { 
      QueryDetails QueryDetailsObj = new QueryDetails(); 
      QueryDetailsObj.Show(); 

     }   

请问我可以通过哪些代码或链接解决上述问题?

回答