none
一个SqlDataSource、一个Textbox、一个Button和一个GridView不用任何后台代码,要问的问题! RRS feed

  • 问题

  • 我用一个SqlDataSource、一个Textbox、一个Button和一个GridView不用任何后台代码,想达到在TextBox中输入条件,点击Button,就能得到符合条件的效果!
    我是这样做的:
    1.设置SqldataSource,并把Where条件设置为列为‘Name’(某个字段),运算符‘=’,源‘Control’,控件ID‘TextBox’。
    2.设置Button的Load事件为TextBox_TextChanged。完成!
        问题是:我想在页面打开的时候显示全部数据,然后在TextBox中输入条件,点Button后才显示查询的结果!
    ----------------------------------
        但现在一打开页面并不会显示全部数据,必须在TextBox中输入条件点Button后才显示查询的结果。问题应该是出在TextBox没输入条件时,where条件列‘Name’找不到符合条件的行,所以不显示任何数据!
    ---------------------------------
    我该怎么做呢???

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年7月19日 13:57

答案

  • Hi:

    请参考

    <%@ Page Debug="true" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title>
    </head>
    <body>
    <form id="form1" runat="server">
    
      <div>
    
       <asp:SqlDataSource runat="server" ID="sds_Categories" 
    
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    
        SelectCommand="
    
        SELECT [CategoryID], [CategoryName], [Description] FROM [Categories] Where ((@CategoryID = -1) Or (CategoryID = @CategoryID))
    
        And ((@CategoryName ='All') Or (CategoryName Like '%' + @CategoryName +'%'))" >
    
        <SelectParameters>
    
        <asp:ControlParameter ControlID="ddl_Categories" PropertyName="SelectedValue" Name="CategoryID" />
    
        <asp:ControlParameter ControlID="txt_CategoryName" PropertyName="Text" Name="CategoryName" />
    
        </SelectParameters>
    
        </asp:SqlDataSource>
    
        CategoryID:
    
       <asp:DropDownList ID="ddl_Categories" runat="server">
    
        <asp:ListItem Text="All" Value="-1" />
    
        <asp:ListItem Text="1" Value="1" />
    
        <asp:ListItem Text="2" Value="2" />
    
        <asp:ListItem Text="3" Value="3" />
    
        <asp:ListItem Text="4" Value="4" />
    
        <asp:ListItem Text="5" Value="5" />
    
        <asp:ListItem Text="6" Value="6" />
    
        <asp:ListItem Text="7" Value="7" />
    
        <asp:ListItem Text="8" Value="8" />
    
       </asp:DropDownList>
    
        CategoryName:<asp:TextBox runat="server" ID="txt_CategoryName" Text="All" /><br />
    
       <asp:Button Text="查詢" ID="btn_Query" runat="server" onclick="btn_Query_Click" />
    
      </div>
    
      <div>
    
       <asp:GridView runat="server" ID="gv_table" DataSourceID="sds_Categories" 
          AutoGenerateColumns="False" DataKeyNames="CategoryID" >
    
        <Columns>
         <asp:BoundField DataField="CategoryID" HeaderText="CategoryID" 
          InsertVisible="False" ReadOnly="True" SortExpression="CategoryID" />
         <asp:BoundField DataField="CategoryName" HeaderText="CategoryName" 
          SortExpression="CategoryName" />
         <asp:BoundField DataField="Description" HeaderText="Description" 
          SortExpression="Description" />
        </Columns>
       </asp:GridView>
      </div>
     </form>
    </body>
    
    </html>
    

    详细解说:http://www.dotblogs.com.tw/shadow/archive/2011/07/19/31834.aspx


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年7月19日 15:13

全部回复

  • Hi:

    请参考

    <%@ Page Debug="true" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title>
    </head>
    <body>
    <form id="form1" runat="server">
    
      <div>
    
       <asp:SqlDataSource runat="server" ID="sds_Categories" 
    
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    
        SelectCommand="
    
        SELECT [CategoryID], [CategoryName], [Description] FROM [Categories] Where ((@CategoryID = -1) Or (CategoryID = @CategoryID))
    
        And ((@CategoryName ='All') Or (CategoryName Like '%' + @CategoryName +'%'))" >
    
        <SelectParameters>
    
        <asp:ControlParameter ControlID="ddl_Categories" PropertyName="SelectedValue" Name="CategoryID" />
    
        <asp:ControlParameter ControlID="txt_CategoryName" PropertyName="Text" Name="CategoryName" />
    
        </SelectParameters>
    
        </asp:SqlDataSource>
    
        CategoryID:
    
       <asp:DropDownList ID="ddl_Categories" runat="server">
    
        <asp:ListItem Text="All" Value="-1" />
    
        <asp:ListItem Text="1" Value="1" />
    
        <asp:ListItem Text="2" Value="2" />
    
        <asp:ListItem Text="3" Value="3" />
    
        <asp:ListItem Text="4" Value="4" />
    
        <asp:ListItem Text="5" Value="5" />
    
        <asp:ListItem Text="6" Value="6" />
    
        <asp:ListItem Text="7" Value="7" />
    
        <asp:ListItem Text="8" Value="8" />
    
       </asp:DropDownList>
    
        CategoryName:<asp:TextBox runat="server" ID="txt_CategoryName" Text="All" /><br />
    
       <asp:Button Text="查詢" ID="btn_Query" runat="server" onclick="btn_Query_Click" />
    
      </div>
    
      <div>
    
       <asp:GridView runat="server" ID="gv_table" DataSourceID="sds_Categories" 
          AutoGenerateColumns="False" DataKeyNames="CategoryID" >
    
        <Columns>
         <asp:BoundField DataField="CategoryID" HeaderText="CategoryID" 
          InsertVisible="False" ReadOnly="True" SortExpression="CategoryID" />
         <asp:BoundField DataField="CategoryName" HeaderText="CategoryName" 
          SortExpression="CategoryName" />
         <asp:BoundField DataField="Description" HeaderText="Description" 
          SortExpression="Description" />
        </Columns>
       </asp:GridView>
      </div>
     </form>
    </body>
    
    </html>
    

    详细解说:http://www.dotblogs.com.tw/shadow/archive/2011/07/19/31834.aspx


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年7月19日 15:13
  • 其实很容易,你在第一步设置where条件name默认值为“*”试试

    再不行 传值一下更新页面


    http://www.liuqiyuan.com
    2011年7月19日 16:07
  • 有兩個地方可檢查看看:

    1. 修改SelectCommand為預設可以查出所有結果。

    2.將SelectParamater的ConvertEmptyStringToNull設為true。

    程式碼如下:

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    		ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
    		SelectCommand="SELECT * FROM [Region] WHERE @RegionDescription = '' OR [RegionDescription] = @RegionDescription">
    <SelectParameters>
    	<asp:ControlParameter ControlID="TextBox1" Name="RegionDescription" PropertyName="Text" Type="String" ConvertEmptyStringToNull="False" />
    </SelectParameters>
    </asp:SqlDataSource>  
    


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年7月20日 1:12
  • 用* 不行吧?

    select NO1 from Table1 where NO2=* 

    通不过!


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年7月20日 5:26