<asp:GridView ID="gvMedia" Width="100%" HorizontalAlign="Left"   runat="server" 
    DataSourceID="SqlDataSourceMedia" AllowPaging="True"
    AutoGenerateColumns="False" DataKeyNames="id" BackColor="WhiteSmoke" 
    onrowcommand="gvMedia_RowCommand">
<Columns>
    <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
SortExpression="id" Visible="False" />
    <asp:TemplateField HeaderText="year" SortExpression="year">
<ItemTemplate>
    <asp:Label ID="Label3" runat="server" Text='<%# Bind("year") %>'></asp:Label>
</ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="country" SortExpression="country">
       <ItemTemplate>
    <asp:Label ID="Label2" runat="server" Text='<%# showCountry(Eval("country")) %>'></asp:Label>
</ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField ShowHeader="False">
<ItemTemplate>
    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandArgument='<%#Eval("Id")%>'
CommandName="Edit" Text="Edit"></asp:LinkButton>
    &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" 
CommandName="Delete" Text="Delete" OnClientClick='return confirm("Are you sure to delete it?")'></asp:LinkButton>
</ItemTemplate>
<ControlStyle CssClass="link" ForeColor="Gray" />
<ItemStyle CssClass="link" />
    </asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSourceMedia" runat="server"  ConnectionString="<%$ ConnectionStrings:con %>" 
    OldValuesParameterFormatString="original_{0}" 
     SelectCommand="SELECT * FROM [Media] WHERE [type]=@type and [year]=@year order by id desc"
    DeleteCommand="DELETE FROM [Media] WHERE [id] = @original_id"
    ondeleted="SqlDataSourceMedia_Deleted">
<DeleteParameters>
   <asp:Parameter Name="original_id" Type="Int32" />
</DeleteParameters>
<SelectParameters>
    <asp:ControlParameter ControlID="rbtnType" PropertyName="SelectedValue" Type="string" name="type" />
    <asp:ControlParameter ControlID="txtYearSearch" PropertyName="Text" Type="string" Name="year" />
</SelectParameters>
</asp:SqlDataSource> 在我页面初始化的时候,怎么样让他只根据类型条件查询?

解决方案 »

  1.   

    在后台写代码if(!IsPostBack)
    {
    //设置SelectCommand
    }
      

  2.   

    这个我试过了。
    不行。
    GridView是用SqlDataSource直接绑定数据源的。你在给他一个,就会起冲突
      

  3.   

    绑定前先gvMedia.DataSourceID=null;
      

  4.   

    后台赋值给Select所需要的值:
            if (!IsPostBack)
            {
                SqlDataSourceMedia.SelectParameters["type"].DefaultValue = "你的值1";
                SqlDataSourceMedia.SelectParameters["year"].DefaultValue = "你的值2";        }
      

  5.   

    SelectCommand= "SELECT * FROM [Media] WHERE [type]=@type and [year]=@year order by id desc"
    查询时用如下语句
    SqlDataSource1.SelectParameters[ "type "].DefaultValue="";
    ...               
     GridView1.DataBind();