[英]ASP.NET Code in GridView
我正在將一個經典的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>
我認為這不是你想要的,但可以提供幫助:
<asp:SqlDataSource ID="DataSource1" runat="server" SelectCommand="Your SQL"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
<SelectParameters>
<asp:QueryStringParameter Name="sp" QueryStringField="sp"
Type="String" />
</SelectParameters>
</asp:SqlDataSource>
在這種情況下,您提供的SQL將以查詢字符串sp
作為參數結束。
也許你可以這樣做此 :
EXEC (@sp);
我無法測試它,所以帶上一粒鹽。 但我認為除此之外你還可以詳細說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.