【发布时间】:2013-09-05 08:26:48
【问题描述】:
例如,我有 4 个 textbox 和 4 个 comboBox,我想在 DatagridView 中搜索这些值
输入了textboxes 和comboBoxes 和我不想用空的搜索。
我可以使用 if Condition 来完成这项工作,但我认为它没有经过优化并且非常复杂。
【问题讨论】:
标签: c# sql sql-server winforms datagridview
例如,我有 4 个 textbox 和 4 个 comboBox,我想在 DatagridView 中搜索这些值
输入了textboxes 和comboBoxes 和我不想用空的搜索。
我可以使用 if Condition 来完成这项工作,但我认为它没有经过优化并且非常复杂。
【问题讨论】:
标签: c# sql sql-server winforms datagridview
页面加载时从 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 ;
}
【讨论】: