George Shepherd's Windows Forms FAQ
Questions and answers in this FAQ have been collected from newsgroup posts, various mailing lists and the employees of Syncfusion.

5.73 How do I determine the DataGridTableStyle MappingName that should used for a DataGrid to make sure the grid uses my tablestyle


The DataGrid looks for a DataGridTableStyle.MappingName that is the type name of its datasource. So, depending upon what datasource you are using, this may be "ArrayList" for a ArrayList, "MyCollection[]" for an array of MyCollection objects, or "MyTableName" for a datatable, or whatever.

Here is a code snippet provide by NoiseEHC on the microsoft.public.dotnet.framework.windowsforms.controls newsgroup that you can use to see exactly what mappingname is required for your datasource.

[C#]
//usage
ShowMappingName(dataGrid1.DataSource);

//implementation
void ShowMappingName(object src)
{
     IList list = null;
     Type type = null;
     if(src is Array)
     {
          type = src.GetType();
          list = src as IList;
     }
     else
     {
          if(src is IListSource)
               src = (src as IListSource).GetList();
          if(src is IList)
          {
               type = src.GetType();
               list = src as IList;
          }
          else
          {
               MessageBox.Show("error");
               return;
          }
     }
     if(list is ITypedList)
          MessageBox.Show((list as ITypedList).GetListName(null));
     else
          MessageBox.Show(type.Name);
}

[VB.NET]

Private Sub ShowMappingName(ByVal src As Object)
     Dim list As IList = Nothing
     Dim t As Type = Nothing

     If TypeOf (src) Is Array Then
          t = src.GetType()
          list = CType(src, IList)
     Else
          If TypeOf src Is IListSource Then
               src = CType(src, IListSource).GetList()
          End If
          If TypeOf src Is IList Then
               t = src.GetType()
               list = CType(src, IList)
          Else
               MessageBox.Show("Error")
               Return
          End If
     End If

      If TypeOf list Is ITypedList Then
           MessageBox.Show(CType(list, ITypedList).GetListName(Nothing))
     Else
          MessageBox.Show(t.Name)
     End If
End Sub


Windows Forms-Datagrid

© 2001-2009 Copyright Syncfusion Inc. All rights reserved.  |  Privacy Policy  |  Contact  |  Sitemap