簡體   English   中英

從另一個類訪問RowCount

[英]Accessing RowCount from another class

我有一個winform,它需要許多參數,執行存儲過程,然后用結果填充DataGridView。

我想做的是在winform的底部添加一個字符串,該字符串返回一條消息,包括返回的總行數。

目前,使用以下語法可以正常工作:

deskSearchResultCount.Text = String.Format("Your search returned {0} results", deskDataGridView.RowCount );

但是,由於我的大部分應用程序都是以初始形式編寫的,因此我將各節移到類中,以便對其進行“整理”-(我對C#還是很陌生,因此很抱歉,如果這是一個n00b錯誤)

添加名為Summary的類后,我想按以下方式調用RowCount:

Summary Returned = new Summary();

            deskSearchResultCount.Text = String.Format("Your search returned {0} results", Returned.Total("Desk"));

與我的摘要類包含以下內容:

    public class Summary : ContactAnalysisToolbox
{
    public int Total(string type)
    {
        if (type == "Desk")
        {
            return deskDataGridView.Rows.Count;
        }
        else
        {
            return visionDataGridView.Rows.Count;
        }
    }

但是,返回的計數始終為0。同樣,當逐步執行該過程時,它似乎也沒有嘗試將其自身設置為其他任何值。

誰能幫我/指出正確的方向嗎?

謝謝。

編輯-

我還提供了完整表格-

    using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.DirectoryServices.AccountManagement;
using System.IO;

//
//  Todo :
//      -- Capture Assigned Team In Output
//
//

namespace CallsAnalysisToolbox
{
    public partial class ContactAnalysisToolbox : Form
    {
        public ContactAnalysisToolbox()
        {
            InitializeComponent();

            // Grabs username for current user and displays a welcome message
            this.welcomeMessage.Text = "Welcome " + UserPrincipal.Current.Name;
        }

        private void searchVision_Click(object sender, EventArgs e)
        {
            try
            {
                // Run sp_incomingCalls on SQLCLUSTER
                this.rep_IncomingCallsTableAdapter.Fill(this.visionReportsDataSet.Rep_IncomingCalls, dateTimePicker1.Value, dateTimePicker2.Value, textBox1.Text, textBox2.Text);
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

            // Make export button active when search returns results
            exportVisionButton.Enabled = (visionDataGridView.Rows.Count > 0);

            // Assign returned row count to visionSearchResultCount label and then display label
            visionSearchResultCount.Text = String.Format("Your search returned {0} results", visionDataGridView.RowCount);
            visionSearchResultCount.Visible = true;
        }

        private void searchDesk_Click(object sender, EventArgs e)
        {
            try
            {
                // Run sp_caseActivity on SQLCLUSTER
                this.rPT_CaseActivityTableAdapter.Fill(this.deskDataSet.RPT_CaseActivity, deskFrom.Value, deskTo.Value, deskClientList.Text, deskBenefitList.Text, deskStatusList.Text);
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

            if (deskDataGridView.Rows.Count > 0)
            {


                exportDeskButton.Enabled = true;
                deskSearchResultCount.Visible = true;

                Summary Returned = new Summary();

                deskSearchResultCount.Text = String.Format("Your search returned {0} results", Returned.Total("Desk"));

                deskSummaryData.Visible = true;
                noDataDesk.Visible = false;

                // Populate the summary tab

                // Get Email / Phone case count


                deskTotalCaseResults.Text = deskDataGridView.RowCount.ToString();
                //deskTotalEmailCasesResults.Text = emailCount.ToString();
                //deskTotalPhoneCasesResults.Text = phoneCount.ToString();
            }
        }

        //TODO : Combine Export functions. Ideally just a single function rather than the repeated logic within the Export class for each datagrid
        private void exportVisionButton_Click(object sender, EventArgs e)
        {
            Export Export = new Export();

            Export.ReturnedResult("Vision");
        }

        private void exportDeskButton_Click(object sender, EventArgs e)
        {
            Export Export = new Export();

            Export.ReturnedResult("Desk");
        }

        private void deskDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // Limit 'open case in browser' action to first cell
            if (deskDataGridView.CurrentCell.ColumnIndex.Equals(0))
            {
                string url = string.Format("https://qa.internal.local/agent/case/{0}", deskDataGridView.Rows[e.RowIndex].Cells[0].Value);
                Process.Start(url);
            }
        }
    }
}

例如,您可以做這樣的事情。 這就是方法擴展

嘗試這個

public static class Helpers
{
    public static string ToTotalCount(this DataGridView item)
    {
        return string.Format("Your search returned {0} results", item.Rows.Count);
    }
}

在您的表單中,確保類Helpers的名稱空間在using中:

 deskSearchResultCount.Text = deskDataGridView.ToTotalCount();

暫無
暫無

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

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