gpt4 book ai didi

c# - GridView 中的 ASP.NET 代码

转载 作者:行者123 更新时间:2023-11-30 17:44:28 24 4
gpt4 key购买 nike

我正在将一个经典的 ASP 站点转换为 ASP.NET (C#),并且有几个存储过程可以从一个页面调用。目前在经典的 ASP 中,存储过程名称和其他参数等值在查询字符串中传递。我正在尝试确定一种在 ASP.NET 中执行此操作的方法,因为我似乎无法使用变量作为存储过程名称。我尝试做的是以下内容:

<% string sp = Request.QueryString["sp"]; %>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="<%= sp%>" SelectCommandType="StoredProcedure">

第二部分是存储过程,可能需要不同数量的参数。在我的经典 ASP 中,我通过查询字符串传递参数,但首先检查它们是否为空,如果是,则不要尝试将它们作为参数传递给存储过程。以下是我在经典 ASP 中的做法:

If param1 <> "" then
cmd.Parameters(i) = param1
i=i+1
End If
If param2 <> "" then
cmd.Parameters(i) = param2
i=i+1
End If
If param3 <> "" then
cmd.Parameters(i) = param3
i=i+1
End If
If param4 <> "" then
cmd.Parameters(i) = param4
End If

我也没有看到在 .NET 中完成此操作的方法,因为我无法在 GridView 中放置代码。如何完成这两件事情?

编辑:我通过在 Page_Load 事件中执行以下操作解决了问题的前半部分,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
sp = Request.QueryString["sp"];
SqlDataSource1.SelectCommand = sp;
}

现在唯一剩下的问题是如何只传递已分配值的参数。

最佳答案

问题解决了。在后面的代码中:

protected void Page_Load(object sender, EventArgs e)
{
sp = Request.QueryString["sp"];
param1 = Request.QueryString["param1"];
param2 = Request.QueryString["param2"];
param3 = Request.QueryString["param3"];

SqlDataSource1.SelectCommand = sp;

if (param1 != null)
{
SqlDataSource1.SelectParameters.Add("param1", param1);
}
if (param2 != null)
{
SqlDataSource1.SelectParameters.Add("param2", param2);
}
if (param3 != null)
{
SqlDataSource1.SelectParameters.Add("param3", param3);
}
}

在aspx中

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommandType="StoredProcedure">
</asp:SqlDataSource>

关于c# - GridView 中的 ASP.NET 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29657915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com