如何从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";
答案 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());
}
}