【发布时间】:2015-03-16 04:06:52
【问题描述】:
我有一个gridview,应该在选择一个搜索选项中的一个条件时隐藏某些列。否则,应查看该列。
我已经使用此代码隐藏了一个列:
grdMarketingReport1.Columns[2].Visible = false;
但是当我搜索另一个应该显示该列的条件时,它不再显示。注意gridview属性Autogeneratecolumn设置为false
更新
按钮点击事件
if ((txtHiddenLoc.Text == "ALL") && (txtHiddenBus.Text == "ALL"))
{
executeQuery();
grdMarketingReport1.Columns[2].Visible = true;
}
else if (((txtHiddenLoc.Text == "ALL") && (txtHiddenBus.Text != "ALL"))
{
executeQuery();
grdMarketingReport1.Columns[2].Visible = false;
}
..
public void executeQuery()
{
SqlCommand cmd = new SqlCommand("spMarketingReport1", con);
cmd.CommandTimeout = 120;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@RP", txtHiddenRP.Text);
cmd.Parameters.AddWithValue("@Location", txtHiddenLoc.Text);
cmd.Parameters.AddWithValue("@DateFrom1", txtdatefrom1.Text);
cmd.Parameters.AddWithValue("@DateTo1", txtdateto1.Text);
try
{
con.Open();
grdMarketingReport1.EmptyDataText = "No Records Found";
grdMarketingReport1.DataSource = cmd.ExecuteReader();
grdMarketingReport1.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
它正确地隐藏了该列,但是当另一个条件适用于查看该列时,该列上的数据/值将被清空。
【问题讨论】:
-
你在哪里设置这个?按钮点击?页面加载?您是否重置了积极条件的可见性?
-
这是按钮点击
-
在页面加载中是否调用了
executeQuery()?如果是这样,它会在if (!Page.isPostBack)中调用吗?还有什么时候txtHiddenLoc.Text != "ALL" -
不,它们不在页面加载中。我决定不放整个代码,因为它可能无关紧要,只是让问题更长。 txthiddenLoc 实际上是一个隐藏字段,每当用户在 modalpopup 中选择 ALL 选项时,系统都会在 txthiddenloc 以及 txtHiddenBus 中放置一个值 ALL
标签: c# asp.net sql-server gridview