请各位指教,问题是这样的: 
        页面上有一个DropDownList,一个TextBox,一个GridView.GridView中有5个列属性,相应的DropDownList中也有这5列的名称.我想按照DropDownList中的属性值,再加上TextBox中输入的关键字进行组合查询,查询的结果在GridView中显示.如果没有DropDownList的话,那么很容易,直接SELECT   列名1,列名2,列名3,列名4,列名5   FROM   表名   WHERE   列名K=TextBox.value就可以了.但是现在查询的列名不确定啊,要根据DropDownList来决定根据哪一列查询.这怎么做啊?并且好象GridView中的SelectCommand都是写在.aspx文件中的,可不可以写在.cs文件中啊?请各位大哥大姐帮帮忙啊。十分感谢。别人给的答案:
//   .aspx 
<asp:gridview> 
<columns> 
<asp:boundfield   DataField= "MyFieldAlias "   /> 
... 
<asp:sqldatasource   SelectCommand= ' <%#   String.Format( "SELECT   {0}   AS   MyFieldAlias   FROM   MyTable   WHERE   MyFieldN= '{1} ' ",   MyDropDownList.SelectedValue,   MyTextBox.Text)   %> '   .... 
//   .aspx.cs 
...Button1_Click(   ... 
{ MySqlDataSource.DataBind(); 
MyGridView.DataBind(); }
有点看不明白,myfieldAlias是列名,MyFieldN是什么

解决方案 »

  1.   

    GridView中的SelectCommand都是写在.aspx文件中的,可不可以写在.cs文件中啊?
    当然可以
    System.Configuration.ConfigurationManager.ConnectionStrings["ConnString"].ToString();
            SqlDataSource1.ConnectionString = connstring;
    string sql="select "+DropDownList.SelectedValue+" from table where "+DropDownList.Selected.Value+"='"+textbox1.text+"'"
            SqlDataSource1.SelectCommand = sql;
            SqlDataSource1.Select(DataSourceSelectArguments.Empty);
      

  2.   

    写在那里不重要,谁能给解释下
    SelectCommand= ' <%# String.Format( "SELECT {0} AS MyFieldAlias FROM MyTable WHERE MyFieldN= '{1} ' ", MyDropDownList.SelectedValue, MyTextBox.Text) %> '
    和楼上的那个sql有什么不同,还有那个myfieldalias填写的是不是需要的所有的列名,*可以不
    还有那个Myfieldn是什么
      

  3.   

    都作为条件,有选择的拼接sql。
      

  4.   

    麻烦给解释下内容selectcommand后面的什么意思myfieldalias填写的是不是需要的所有的列名,*可以不
    还有那个Myfieldn是什么
      

  5.   


    <asp:sqldatasource SelectCommand= ' <%# String.Format( "SELECT {0} AS MyFieldAlias FROM MyTable WHERE MyFieldN= '{1} ' ", MyDropDownList.SelectedValue, MyTextBox.Text) %> '
    MyFieldN 是MyTable表中的一个字段
      

  6.   

    那请问楼上,如果是一个字段,表中那么多字段,我应该吧那个写myfieldn哪里呢
      

  7.   

    自定义查询字段,dropdownlist1绑定表字段,再传递值到存储过程,实现动态查询
    declare @sql varchar(100)
    set 2sql='select from '+@table+' where 1=1'if(@key<>'') and (@key is not null)
    begin
     set @Sql=@Sql+' and ''+@k+'' like ''%'+@key+'%'''
    end动态创建数据列绑定到gridview
      

  8.   

    name='列名'
    switch(i){//DropDownList 当前选中列名值
        case 1:
            name='...';
        break;

    }
    。。之后直接把值 拼装到SQL语句就行了...
      

  9.   

    那请问楼上,如果是一个字段,表中那么多字段,我应该吧那个写myfieldn哪里呢=========================<asp:sqldatasource SelectCommand= ' 
    <%# String.Format( "SELECT {0} AS MyFieldAlias FROM MyTable WHERE MyFieldN= '{1} ' ", MyDropDownList.SelectedValue, MyTextBox.Text) %> '就是一个查询语句 
    SELECT {0} AS MyFieldAlias FROM MyTable WHERE 其他字段='value' or 其他字段2='value' or MyFieldN= '{1} ' ", MyDropDownList.SelectedValue, MyTextBox.Text
      

  10.   

    where后面应该怎么写,写 droplist.select.value=textbox1.tex?
      

  11.   


    String.Format( "SELECT {0} AS MyFieldAlias FROM MyTable WHERE MyFieldN= '{1} ' 
    or 字段1='{2}' or 字段2='{3}' ", MyDropDownList.SelectedValue, MyTextBox.Text,
    给字段1赋值,给字段2赋值)
      

  12.   

    sqldatasource中
    <SelectParameters>
        <asp:ControlParameter ControlID="dropdownlist1" PropertyName="SelectedValue" />
    </SelectParameters>
      

  13.   

    可以直接写在cs文件中
    // .aspx.cs  
    ...Button1_Click( ...  
    {  
    列名=DropDownList.SelectValue();
    strSqlText="SELECT 列名1,列名2,列名3,列名4,列名5 FROM 表名 WHERE " + 列名 + " like '%" + TextBox.value +"%'"
    ……MySqlDataSource.DataBind();  
    MyGridView.DataBind();  }
      

  14.   

    那个myFileN就是你查询表中的一个字段啊