我正在使用Windows窗体创建一个程序,我已经构建了一些代码,比如这个
在文本框中编写网站网址,然后点击开始按钮,DataGridViews中显示匹配的数据。
我有一个6个DataGridViews。在First DataGridView中,匹配数据显示(步骤1) 然后,其他5个DataGridviews将显示为cascade引用First DataGridView行的值(webApplicationName)
代码在
之下private void mtbtnStart_Click(object sender, EventArgs e)
{
string webApplicationName = string.Empty;
string siteID = string.Empty;
mtlblError.Text = "No record returned.";
Migration_Status_DAC dac = new Migration_Status_DAC();
DataSet ds = new DataSet();
//Web Application
ds = dac.SelectWebApplicationStatus(mtextUrl.Text);
DataTable dt = ds.Tables[0];
if (ds != null && dt != null && dt.Rows.Count > 0)
{
webApplicationName = dt.Rows[0]["AppName"].ToString();
mgrdWebApplication.DataSource = dt;
//Content Database
ds = dac.SelectContentDatabaseStatus(webApplicationName);
DataTable dtContent = ds.Tables[0];
if (ds != null && dtContent != null && dtContent.Rows.Count > 0)
{
mtlblError.Visible = false;
mgrdContentDatabase.DataSource = dtContent;
//SiteCollection
ds = dac.SelectSiteCollectionStatus(webApplicationName);
DataTable dtSiteCol = ds.Tables[0];
if (ds != null && dtSiteCol != null && dtSiteCol.Rows.Count > 0)
{
mgrdSiteCollections.DataSource = dtSiteCol;
//Sites
ds = dac.SelectSitesStatus(webApplicationName);
DataTable dtSites = ds.Tables[0];
if (ds != null && dtSites != null && dtSites.Rows.Count > 0)
{
siteID = dtSites.Rows[0]["SiteID"].ToString();
mgrdSites.DataSource = dtSites;
//Lists
ds = dac.SelectListsStatus(siteID);
DataTable dtLists = ds.Tables[0];
if (ds != null && dtLists != null && dtLists.Rows.Count > 0)
{
mgrdLists.DataSource = dtLists;
}
//Document Library
ds = dac.SelectDocumentLibraryStatus(siteID);
DataTable dtDocLib = ds.Tables[0];
if (ds != null && dtDocLib != null && dtDocLib.Rows.Count > 0)
{
mgridDocumentLibrary.DataSource = dtDocLib;
}
}
else
{
mtlblError.Visible = true;
}
}
else
{
mtlblError.Visible = true;
}
}
else
{
mtlblError.Visible = true;
}
}
else
{
mgrdWebApplication.DataSource = null;
mgrdContentDatabase.DataSource = null;
mgrdSiteCollections.DataSource = null;
mgrdSites.DataSource = null;
mgrdLists.DataSource = null;
mgridDocumentLibrary.DataSource = null;
}
}
现在我想添加这个
添加Combobox并添加一些条件,例如[Show all]和[See Over 100GB DB]
如果我选择[See Over 100GB DB]选项,则DataGridView只显示匹配的行。
这意味着,我想使用Combobox选择过滤Datagridview,数据源已经
绑定,所以我想不要更改DataSource ....
我尝试找到组合框和DataGridView,但通常与DataGridView中的Combobox相关....
我怎样才能获得第一个DataGridViews的值(webApplicationName)
请有人帮帮我..我什么都不知道......
由于
答案 0 :(得分:2)
您可以使用BindingSource将数据源绑定到DataGridView。 这样,您只需更改bindingSource的Filter属性,过滤器将自动应用于网格中显示的数据。 无需更改数据源。
答案 1 :(得分:0)
我构建了一个代码,效果很好
使用ComboBox SelectedItemChanged事件
使用DataView和DataView.RowFilter
以下代码
private void mtcbContentDBSearchCondition_SelectedIndexChanged(object sender, EventArgs e)
{
DataView dvContentDatabase = new DataView(dtContent);
if (mtcbContentDBSearchCondition.SelectedItem.ToString() == "All")
{
mgrdContentDatabase.DataSource = dtContent;
}
else
{
dvContentDatabase.RowFilter = string.Format("ContentDBSize >= 300000000", mtcbContentDBSearchCondition.SelectedItem.ToString());
mgrdContentDatabase.DataSource = dvContentDatabase;
}
}