从XML属性C#读取文件扩展名

时间:2016-05-28 11:51:52

标签: c# xml datagridview

如何从XML属性中读取文件扩展名并在datagridview中显示?

这是我的XML。例如,我想在datagridview中只显示.exe扩展名。

<dir ParentFolder="e:\">
  <file FileName="SQLEXPR_x64_ENU.exe" />
  <file FileName="SQLManagementStudio_x64_ENU (2).exe" />
  <file FileName="wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b.exe" />
</dir>

我加载了xml文件,我只能在DataGridViewTextBoxColumn中显示SQLEXPR_x64_ENU.exe,但我只需要显示.exe。这是代码

      XmlReader xmlFile = XmlReader.Create("directory.xml", new XmlReaderSettings());

      DataSet ds = new DataSet();
      //Read xml to dataset
      ds.ReadXml(xmlFile);
      dataGridView1.DataSource = ds.Tables["dir"]; 
      dataGridView1.DataMember  = "dir_file"; 

2 个答案:

答案 0 :(得分:0)

System.IO.Path有一个属性GetExtension(),它将提供&#34; .exe&#34;在你的情况下。

String pExt = System.IO.Path.GetExtension(fileName);

希望这有帮助。

答案 1 :(得分:0)

string yourPath = "SQLEXPR_x64_ENU.exe";
Path.GetExtension(yourPath); // returns '.exe'
Path.GetFileNameWithoutExtension(yourPath); // returns 'SQLEXPR_x64_ENU'
Path.GetFileName(yourPath); // returns 'SQLEXPR_x64_ENU.exe'

您需要“手动”格式化单元格值并调用GetExtension方法。 使用CellFormatting事件。

更新1:

格式化单元格的示例代码。

private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name == "COLUMNNAME")
    {
        e.Value = Path.GetExtension(e.Value.ToString());
    }
}

更新2:

为避免异常,您可以添加空检查:

private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if ((dataGridView1.Columns[e.ColumnIndex].Name == "COLUMNNAME") && (e.Value != null))
    {           
         e.Value = Path.GetExtension(e.Value.ToString());            
    }
}