从类中访问datagridview中的数据

时间:2017-02-03 14:38:31

标签: c# class datagridview

我已经在这个问题上阅读了很多主题,但我没有找到答案。我对此很新,所以请耐心等待。

我试图将值从datagridview传递到列表。然后在一个新类中我想让som方法访问该列表。麻烦的是,当我传递datagridview时,它返回它没有内容和值,这意味着我无法对它做任何事情。

//// TESTING ////下的代码就像我想要的那样工作。我创建了一个指定列表的实例,它正确地计算了行数,见截图。

    public List<vertEl> getVertList = new List<vertEl>();

    //Opens the file dialog and assigns file path to Textbox
    OpenFileDialog browseButton = new OpenFileDialog();
    private void browse_Click(object sender, EventArgs e)
    {

        browseButton.Filter = "Excel Files |*.xlsx;*.xls;*.xlsm;*.csv";
        if (browseButton.ShowDialog() == DialogResult.OK)
        {
            //SOME CODE TO GET DATA FROM EXCEL AND SOME METHODS TO CALCULATE
            //VALUES TO PASS TO THE TAB VERTIKALELEMENTER TAB IN MY DATAGRIDVIEW
            //VERTIKALELEMENTER IS vertElementerDgv IN MY CODE

            ////TESTING////
            GetVertElementasList TEST = new GetVertElementasList();
            getVertList =  TEST.vertList(vertElementerDgv);
            MessageBox.Show(getVertList.Count.ToString());


        }
        else return;
    }

我现在想在一个单独的类中执行此操作并从该类调用一个方法来执行相同操作但是当我尝试使用下面的代码时,我得到的计数与我在form1中的代码时的计数相同(公共部分class BridgeGeometry)。它返回0的计数。方法foo()被分配给表单中的按钮1。

class GetKoord
{
    public GetVertElementasList getList = new GetVertElementasList();

    BridgGeometry obj = new BridgGeometry();

    public void foo()
    {
        var TEST = getList.vertList(obj.vertElementerDgv);
        //var TEST = obj.getVertList;
        MessageBox.Show(TEST.Count.ToString());

    }

}

我还尝试直接从datagridview获取值,但是当我从不是form1 / BridgeGeometry类的类访问它时,它没有任何内容。

Form - screenshot

2 个答案:

答案 0 :(得分:0)

您可以运行循环并将包含选定行的信息存储到公共var中,如下所示:

$http.post('http://example.com/api/user/userregistration', $scope.userInfo).then(function successCallback(response){
                 console.log(response.data.object, status);
                 $scope.processing = false;
                 $scope.processed = true;
            },function errorCallback(response){
                console.log(response.config, response.data);
            });

变量

            string itemOne = dataGridView1.SelectedRows[0].Cells[1].Value + string.Empty;
            string itemTwo= dataGridView1.SelectedRows[0].Cells[2].Value + string.Empty;
            string itemThree = dgMasterGridBun.SelectedRows[0].Cells[3].Value + string.Empty;

答案 1 :(得分:0)

根据链接,我设法让这个工作。可能不是最好的解决方案,而是一个有效的解决方案。我试图绕过数据绑定,列表绑定等等,但由于具有输入值的类是一个混乱的,我现在就放弃了。 datagriview输入值有点来自列表,有些来自其他datagridview。

BFCache page

链接中给出了解释,因此我只是提供了如何在我的程序中完成它。

如果我的GetKoord课程是这样的:

connect-standalone

然后我可以像这样在Button1_Click中获取列表,查看第一篇文章中的屏幕截图:

    public class GetKoord
    {
    private BridgGeometry bridgeGeometry;

    public GetKoord(BridgGeometry form1)
    {
        bridgeGeometry = form1;
    }

    public List<vertElementerParam> getListvertElementer(List<vertElementerParam> theList)
    {
        //var vertElementerDgv = bridgeGeometry.vertElementerDgv;
        GetVertElementasList getVertElementasList = new GetVertElementasList();
        List<vertElementerParam> MyDgvListList = new List<vertElementerParam>();
        MyDgvListList = getVertElementasList.vertList(bridgeGeometry.vertElementerDgv);

        //MessageBox.Show(MyDgvListList.Count.ToString());

        theList = MyDgvListList;
        return theList;
    }

    }