积极答复者
一个SqlDataSource、一个Textbox、一个Button和一个GridView不用任何后台代码,要问的问题!

问题
-
我用一个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# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
答案
-
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- 已建议为答案 肖小勇Moderator 2011年7月20日 0:56
- 已标记为答案 linjiangxian11 2011年7月26日 3:08
全部回复
-
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- 已建议为答案 肖小勇Moderator 2011年7月20日 0:56
- 已标记为答案 linjiangxian11 2011年7月26日 3:08
-
有兩個地方可檢查看看:
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/