簡體   English   中英

使用數組從DataSet.ReadXml獲得DataGridView.DataSource

[英]DataGridView.DataSource from DataSet.ReadXml using array

我有以下將XML文件內容加載到DataGridView的解決方案,它工作正常

DataSet dataSet = new DataSet();
dataSet.ReadXml(filePath);
dataGridView1.DataSource = dataSet.Tables[0];
this.dataGridView1.Columns["id"].Visible = false;
this.dataGridView1.Columns["name"].DisplayIndex = 0;
this.dataGridView1.Columns["party"].Width = 35;
...

現在,我只想傳遞某些特定ID的行,這很好用,並且返回ID = 2的行

DataSet dataSet = new DataSet();
dataSet.ReadXml(filePath);
DataView dv;
dv = new DataView(dataSet.Tables[0], "id = 2 ", "id Desc", DataViewRowState.CurrentRows);
dataGridView1.DataSource = dv;

但是,我希望從數組中返回id,而下面的它將不起作用

int[] myArray;
myArray = new int[2] {2,10};

DataSet dataSet = new DataSet();
dataSet.ReadXml(filePath);
DataView dv;
for (int i = 0; i < myArray.Count(); i++)
{
   dv = new DataView(dataSet.Tables[0], "id in (myArray[i]) ", "id Desc", DataViewRowState.CurrentRows);
}
dataGridView1.DataSource = dv;

我收到錯誤“使用未分配的局部變量'dv'”

怎么了?

XML文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Recipies>
 <Recipe id="1" name="test1" party="false">
 <Recipe id="2" name="test2" party="true">
 <Recipe id="3" name="test3" party="false">
 <Recipe id="4" name="test4" party="false">
 <Recipe id="5" name="test5" party="true">
 <Recipe id="6" name="test6" party="false">
 <Recipe id="7" name="test7" party="false">
 <Recipe id="8" name="test8" party="true">
 <Recipe id="9" name="test9" party="false">
 <Recipe id="10" name="test10" party="true">
</Recipies>

發生錯誤是因為您沒有將任何值放入myArray。 因此myArray.Count()將為-1,因此不會進入for循環。 這意味着沒有為dv分配任何內容,當您嘗試將其與DataSource一起使用時,會出現錯誤。

從側面講,我認為使用myArray.Length而不是myArray.Count()稍微便宜一些。

找到了!

int[] myArray;
myArray = new int[2] {2,10};

DataSet dataSet = new DataSet();
dataSet.ReadXml(filePath);
DataView dv = null;
string RecipeIDConcatenate = string.Join(",", myArray.Select(x => x.ToString()).ToArray());    
dv = new DataView(dataSet.Tables[0], "id in ( " + RecipeIDConcatenate + ")", "id Desc", DataViewRowState.CurrentRows);
}
dataGridView1.DataSource = dv;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM