【问题标题】:Optimised Optional Search In DatagridView优化 DatagridView 中的可选搜索
【发布时间】:2013-09-05 08:26:48
【问题描述】:

例如,我有 4 个 textbox 和 4 个 comboBox,我想在 DatagridView 中搜索这些值 输入了textboxescomboBoxes我不想用空的搜索。 我可以使用 if Condition 来完成这项工作,但我认为它没有经过优化并且非常复杂。

【问题讨论】:

    标签: c# sql sql-server winforms datagridview


    【解决方案1】:

    页面加载时从 sql server 获取数据到静态列表。 然后在过滤器按钮单击事件中, 逐步添加 8 个 if 语句,如if(combox1.checked){ list.Where(obj=>obj.<field name for that combobox>) 明智过滤。以下是示例代码。我想你可能明白。

    static List<CRMIssueHeader> issueheader=new List<CRMIssueHeader>();
    
        protected void Page_Load(object sender, EventArgs e)
        {
            btnUpdate.Visible = false;
            if (!Page.IsPostBack)
            { 
                issueheader = _CRMService.CRMTRN02_GetIssueHeader();
            }
        }
    
    protected void btnOK_Click(object sender, EventArgs e)
    {
      List<CRMIssueHeader> IHeader = new List<CRMIssueHeader>();
            IHeader = issueheader;
           //_CRMService = new CRMService();
            //issueheader  = _CRMService.CRMTRN02_GetIssueHeader();
            if (!chknew.Checked)
                IHeader = IHeader.Where(obj => obj.IssueStatus != 0).ToList();
            if (!chkWIP.Checked)
                IHeader = IHeader.Where(obj => obj.IssueStatus != 1).ToList();
            if (!chkFixed.Checked)
                IHeader = IHeader.Where(obj => obj.IssueStatus != 2).ToList();
            if (chkAccepted.Checked)
                IHeader = IHeader.Where(obj => obj.IssueStatus != 3).ToList();
            if (chkClarification.Checked)
                IHeader = IHeader.Where(obj => obj.IssueStatus != 4).ToList();
            if (chkCancel.Checked)
                IHeader = IHeader.Where(obj => obj.IssueStatus != 5).ToList();
            if (chkOnHold.Checked)
                IHeader = IHeader.Where(obj => obj.IssueStatus != 6).ToList();
            if (ddlCustomers.SelectedValue.ToString() != "All")
                IHeader = IHeader.Where(obj => obj.CustomerCode == ddlCustomers.SelectedValue.ToString()).ToList();
            if (txtFrom.Text.Length != 0 && txtTo.Text.Length != 0)
                IHeader = IHeader.Where(obj => obj.ReportedOn >= DateTime.Parse(txtFrom.Text) && obj.ReportedOn <= DateTime.Parse(txtTo.Text)).ToList();
            else if (txtFrom.Text.Length != 0 && txtTo.Text.Length == 0)
                IHeader = IHeader.Where(obj => obj.ReportedOn >= DateTime.Parse(txtFrom.Text)).ToList();
            else if (txtFrom.Text.Length == 0 && txtTo.Text.Length != 0)
                IHeader = IHeader.Where(obj => obj.ReportedOn <= DateTime.Parse(txtTo.Text)).ToList();
            else ;
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多