大家好。
现在向大家请教关于在加载页面时动态改变SqlDataSource的SelectCommand的SQL语句问题。
假如SqlDatasource原来的SelectCommand等于”Select 字段A,字段B from 表”需将其改为“select 字段C,字段D,字段E from 表”
要实现以上动作我们需如何实现呢?
现在向大家请教关于在加载页面时动态改变SqlDataSource的SelectCommand的SQL语句问题。
假如SqlDatasource原来的SelectCommand等于”Select 字段A,字段B from 表”需将其改为“select 字段C,字段D,字段E from 表”
要实现以上动作我们需如何实现呢?
在后台改不就可以
在选定的数据源上未找到名为“YWYH”的字段或属性(YWYH为设计阶段sqldatasource中字段列表的第一个)
两种可能性,我不知道你是哪一种,你自己看看。
1、由于你得gridview中的列名和datasource中的列名不对应,导致gridview找不到数据。2、有于页面上的参数面有变化,所以系统认为页面上的内容不需要修改,所以没有变化。
这种情况一般把datasource的enableviewstate设成false就行了
比如 SqldataSource 的 SelectCommand ,ConnectionString属性 等。
所以你必须手工保存这些值,比如ViewState["SelectCommand"] =SqldataSource1.SelectCommand;然后 protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//....
} if (ViewState["SelectCommand"] != null)
{
SqlDataSource1.SelectCommand = ViewState["SelectCommand"].ToString(); }
}
建议你加密ViewState
你可以参考http://www.microsoft.com/china/MSDN/library/archives/library/DNAspnet/html/asp11222001.asp
SqlDataSource1.SelectCommand = TextBox1.Text;
//如果你手动修改了GridView的列属性,有可以在开启第二张表时,无法找到列的错误提示,要使用自动生成字段。