簡體   English   中英

GridView中的ASP.NET代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM