- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 GridView (gvPart)
,它的数据源是 SqlDataSource (sdsParts)
。在 gvPart
上,我有属性 AllowPaging="true"
。我还有一个 TextBox (txtPartSearch)
和一个 Button
,用于通过 gvPart
输入和执行搜索。为此,我在后面的代码中有以下内容:
protected void partSearch(object sender, EventArgs e)
{
string query = txtPartSearch.Text;
string selectCmd = "SELECT ... WHERE partnum LIKE '" + query + "%' ... "; // I have cut out most of the statement for clarity
sdsParts.SelectCommand = selectCmd;
gvPart.DataBind();
}
这样做的目的是允许用户输入部件编号,并让 gvPart
仅显示与查询匹配的部件而不是整个列表。
通过上述方法后gvPart
的第一页符合预期。但是,如果这个 select 语句在 gvPart
中产生了多页,点击页脚中的第 2 页将显示第二页,但数据将来自原始数据的第 2 页(即,搜索前最初拉取的数据,使用 sdsParts
中的默认 SelectCommand
。
似乎分页“重置”了 SqlDataSource
并使用了用 Default.aspx 编写的 SelectCommand
,而不管任何 sdsParts.SelectCommand = selectCmd
声明。
我试过完全不使用 SelectCommand
,所以 sdsParts
看起来像这样:
<asp:SqlDataSource ID="sdsParts" runat="server" ConnectionString="..." />
然后在Page_Load
中添加默认的:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string selectCmd = "SELECT ... ";
sdsParts.SelectCommand = selectCmd;
gvPart.DataBind();
}
}
但随后单击 gvPart
中的另一页会使它变成空白,就像 SelectCommand=""
一样。
为什么 sdsParts
的 SelectCommand
会“重置”,我该如何修复/避免这种情况?
编辑
我的问题已经解决了。对于遇到同样问题来到这里的人,请单击此处获取解决方法的解释和建议。
编辑 将我的上述解决方案移至一个答案以便更清晰
最佳答案
为什么要在后面的代码中更改 SqlDataSource 的 SelectCommand?放在控件中。
其次,您的代码容易受到 SQL 注入(inject)攻击,请不要将用户提供的数据连接到您的 TSQL 中......永远。
举个例子,作为一个快速的痛苦教训,运行你的程序并输入以下代码作为零件号 ';DROP TABLE PARTS;'
,然后在你哭完之后,然后如果您的老板不解雇您,请更改您的代码。
关于c# - ASP :SqlDataSource SelectCommand property does not persist when paging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17582930/
我有一个奇怪的问题。如果我使用 "SELECT filed1, field2…. FROM some_table WHERE field1 LIKE 'something'" 在“$grid->Sel
我有以下功能代码: Call ConnSettings() Dim objDs As New DataSet Dim Query As String Query = "the query" Cmd =
目前我会稍微清理一下我的代码,VS 告诉我,最好对 sql 命令使用 SqlParameter 而不是复合 string。所以我决定更改我的代码,不幸的是现在我没有得到结果,我也不知道为什么。这是我的
好的,我遇到了逻辑流程问题。出于某种原因,我声明的变量之一并没有在当前上下文中存在。错误在第 18 行: Exception Details: System.InvalidOperationExcep
在使用网站、加载内容等一段时间后,此消息显示“Fill:SelectCommand.Connection 属性尚未初始化”!我认为这是因为 sql 连接,但不确定......我想知道我能做些什么来防止
我正在尝试在我的应用程序中创建一个搜索框,为此我需要修改 SqlDataSource.SelectCommand。我将不胜感激任何帮助! 为了测试,我是这样做的,它可以工作,但它容易受到 sql 注入
我在尝试使用 SSIS 连接到 TSQL 数据库以便将数据导出到 Excel 文件时遇到以下错误。 System.InvalidOperationException: Fill: SelectComm
我有一个带有预定义列和一个选择命令的 GridView 。为什么我得到两次列?我想保留预定义的列和 select 命令,但要避免将列加倍。
DataSet ds = new DataSet(); SqlDataAdapter cmd = new SqlDataAdapter("Select * FROM event", con);
我想将变量从后面的代码传递到 SqlDataSource 的 SelectCommand? 我不想使用内置参数类型(如 ControlParameter、QueryStringParameter 等)
事实证明,我正在使用 SignalR,在 html View 中,我向客户端发出以下请求: var myHub = $.connection.myHub; var direccionWeb
当我尝试使用方法 GetCities() 时,它说: Fill: SelectCommand.Connection property has not been initialized. 谁能告诉我该怎
在调用“Fill”之前尚未初始化 SelectCommand 属性 我在运行 StoredProcedure.ExecuteDataSet() 时遇到此错误; DataSet ds= new Dat
我有一个绑定(bind)到 SqlDataSource 的 GridView,默认的 SelectCommand 定义如下: " ProviderName="MySql.Data.MySq
我试过这个例子,但没有用。 // get value and set in one variable // display successfully variable's value " Select
我正在使用 C# 构建 Windows 应用程序。在我的登录表单中,我得到了在调用 fill 方法之前未初始化 Select Command 属性。 代码如下: public partial clas
我想在 SqlDataSource SelectCommand 中使用下拉列表的选定值。
“我在 asp.net vb 中工作,我试图从 URL 中获取一个变量并将其传递到我的 sql 数据源的 select 语句中。到目前为止,我有这个,但它不适用于 asp.net。
我正在尝试将变量从 jQuery 传递到下拉列表中的 SqlDataSource。 首先,jQuery 的变量从 asp:dropdownlist_1 中获取值,然后将其保存在 jquery 的变量中
我有一个 GridView (gvPart),它的数据源是 SqlDataSource (sdsParts)。在 gvPart 上,我有属性 AllowPaging="true"。我还有一个 Text
我是一名优秀的程序员,十分优秀!