Datagridview中只显示一条记录从excel加载

时间:2016-11-22 13:59:03

标签: c# excel datagridview

我需要你的帮助。我有两个excel文件,我想将它们显示到datagridview中。我发现一个问题,datagridview只是显示我的一个数据而不是全部。我想显示这些数据:

这些是来自[Sheet1 $]

的数据
WSID       Tipe Mesin   Lokasi      
1234         MF           A          
5678         MF           B          
9876         CRM          C          

这些是来自[Data $]

的数据
private void TampilDataSaldo()
        {
            RadioButton[] radiobtn = new RadioButton[] { MFRB, CRMRB };



         string dir = LokasiSaldo.Text;
            konek.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dir + ";Extended Properties='Excel 12.0 xml;HDR=YES;IMEX=1'";



koneksi.ConnectionString = string koneksi = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Dokumen\Alfon\Kerja\BCA\Program\Program-Pengisian-Uang-ATM-BCA-SOY\Program-Pengisian-Uang-ATM-BCA-SOY\bin\x86\Debug\ATM SLA SURABAYA.xlsx;Extended Properties='Excel 12.0 xml;HDR=YES';";

        int saldo;
        Int32.TryParse(SaldoTB.Text, out saldo);
        int thresholdcas;
        Int32.TryParse(SaldoTB.Text, out thresholdcas); //baca angka yang diinput di NominalBox dan ubah jadi integer

        OleDbConnection kon = new OleDbConnection(koneksi);
        OleDbCommand command = kon.CreateCommand();
        OleDbCommand command1 = kon.CreateCommand();

        if(radiobtn[0].Checked)
        {
            kon.Open();
            command.CommandText = "select * from [Data$] where [Tipe Mesin] = '" + radiobtn[0].Text + "'";
            OleDbDataReader reader = command.ExecuteReader();

            while(reader.Read())
            {
                konek.Open();
                System.Data.DataTable aksesdatatabel;
                aksesdatatabel = konek.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                konek.Close();

                OleDbCommand command2 = new OleDbCommand
                (
                    "select WSID, Lokasi, Saldo from [Sheet1$] where WSID = '" + reader["WSID"].ToString() + "'", konek
                );

                DataSet coba = new DataSet();
                OleDbDataAdapter adapter = new OleDbDataAdapter(command2);
                adapter.Fill(coba);

                var table = coba.Tables[0];
                var view = new DataView(table);

                view.RowFilter = string.Format("Saldo < '{0}'", thresholdcas);
                ViewDataSaldoGV.DataSource = view;

            }
            kon.Close();
            }
}

如果按下radiobutton MF,将显示的数据是Tipe Mesin值为MF的数据。实际上应该显示1234和5678,但它只显示5678.任何人都可以帮助我吗?

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="PreIJP">
    <xsl:copy>
        <xsl:value-of select="../AnnString"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

正如其他人在评论中所述。您循环遍历每个项目,而不是将数据添加到循环外部的集合中,每次都要创建新对象。

您需要将数据集移动到while循环之外,只需在循环内部向其添加行即可。这样您就可以添加一个集合,而不是创建和不使用多个1记录数据集