簡體   English   中英

在共享方法中傳遞存儲過程的參數值

[英]passing parameters value of stored procedure in shared method

我從來沒有找到這個答案,即如何傳遞存儲過程的多個參數,這些參數存儲在sharead或static方法內部

我有需要作為共享或靜態方法的Web服務

[WebMethod(EnableSession = true)]
public static SearchParameters[] Select_Search()
{
    List<SearchParameters> JSON = new List<SearchParameters>();
    DataTable dtst = new DataTable();
    dsStockTableAdapters.newSTOCK_LISTTableAdapter List = new dsStockTableAdapters.newSTOCK_LISTTableAdapter();
    string theMake = HttpContext.Current.Session("SelectedMakeValue").ToString();

    dtst = List.GetData(theMake, "0", "0", "0", "0", DisplayType, "", "", "", "Any",
    "", "", "", "", "", 0, "", "", 0, "");

    try {
        foreach (DataRow rdr in dtst.Rows) {
            SearchParameters SRCH = new SearchParameters();
            SRCH.CHASSIS_NO = rdr["CHASSIS_NO"].ToString();
            SRCH.MODEL = rdr["MODEL"].ToString();
            SRCH.color = rdr["color"].ToString();
            SRCH.TRANSMISSION = rdr["TRANSMISSION"].ToString();
            SRCH.DOOR = rdr["DOOR"].ToString();
            SRCH.MAKE = rdr["MAKE"].ToString();
            SRCH.Image1 = rdr["Image1"].ToString();
            SRCH.MODEL_DESCRIPTION = rdr["MODEL_DESCRIPTION"].ToString();

            JSON.Add(SRCH);

        }
    } catch {
    }

    return JSON.ToArray();

}

我想將值從不同的下拉列表和文本框傳遞到下面的此過程

dtst = List.GetData(theMake, "0", "0", "0", "0", DisplayType, "", "", "", "Any",
    "", "", "", "", "", 0, "", "", 0, "");

像這樣的東西

dtst = List.GetData(DropdownList1.SelectedValue, DropDownList2.SelectedValue, DropDownList3.SelectedValue, DropDownList4.SelectedValue, DropDownList5.SelectedValue, DropDownList6.SelectedValue, DropDownList7.SelectedValue, TextBox1.Text, TexBox2.Text);

我已經做了所有我可以做的事,我創造了財產,我使用了會話但沒有運氣

簡單易聽,但難以實施,即如何將控制值用於共享或靜態方法? 從miscrosoft有什么簡單的方法可以做到這一點?

好了,您必須使用對UI實例的引用。

在VB中,您可以通過使用以下引用來實現:My.Forms。[FormName] .DropdownList1.SelectedValue

在C#中,您可以使用My名稱空間: http : //msdn.microsoft.com/zh-cn/library/ms173136.aspx

我認為兩種方法都可以訪問[FormName] .ActiveForm

但是然后您需要將其強制轉換為您的[FormName]類。 同樣,特定表格也必須是“有效的”。

假設您有一個名為:VB中的MainForm的表單:

With CType(MainForm.ActiveForm, MainForm)
            dtst = List.GetData(.DropdownList1.SelectedValue, .DropDownList2.SelectedValue, .DropDownList3.SelectedValue, .DropDownList4.SelectedValue, .DropDownList5.SelectedValue, .DropDownList6.SelectedValue, .DropDownList7.SelectedValue, .TextBox1.Text, .TexBox2.Text)
End With

請注意表單中每個非靜態屬性前面的點。

在C#中,由於沒有with語句,因此您可以執行以下操作:

MainForm frm = (MainForm)MainForm.ActiveForm;
dtst = List.GetData(frm.DropdownList1.SelectedValue, frm.DropDownList2.SelectedValue, frm.DropDownList3.SelectedValue, frm.DropDownList4.SelectedValue, frm.DropDownList5.SelectedValue, frm.DropDownList6.SelectedValue, frm.DropDownList7.SelectedValue, frm.TextBox1.Text, frm.TexBox2.Text)

如果您開始擁有更多可以使用的表單,則可能會遇到問題,並且應該開始尋找另一種解決方案...或與此相關的另一種應用程序設計。

通常,如果我的應用程序中有靜態過程,那么我將自己創建Forms的實例,因此我有一個可以輕松訪問和識別的參考(與其他實例區別開)

編輯:我才知道,我的帖子與問題無關

我一直在發布此帖子,直到我知道該線程是否滿足: 如何使用母版頁從Web用戶控件向內容頁獲取標簽值

如果您使用的是Web服務的共享或靜態方法,則可以通過使用jquery將控件中的多個參數值傳遞到存儲過程中。

我做了什么,我從jquery獲得了控制值,並將該控制值傳遞給webservice參數...但是我必須保持兩個參數的名稱相同,並保持鍵名(JSON的鍵數據)...

 var make = $('#<%= ddlMake.ClientID %>').val();
        var color = $('#<%= ddlColor.ClientID %>').val();
        var catagory = $('#<%= ddlCat.ClientID %>').val();
        var model = $('#<%= ddlMakeModel.ClientID %>').val();
        var GlobalLocation = $('#<%= ddlcountry.ClientID %>').val();
        var modelYear = $('#<%= ddlYear.ClientID %>').val();
        var modelYearTill = $('#<%= ddlYearTill.ClientID %>').val();
        var transmission = $('#<%= ddltransmission.ClientID%>').val();
        var minPrice = $('#<%= ddlcost1.ClientID%>').val();
        var maxPrice = $('#<%= ddlcost2.ClientID%>').val();
        var fual_type = $('#<%= rdfuelType.ClientID%>').val();
        var drive = $('#<%= ddldrive.ClientID %>').val();
        var chassis_no = $('#txtChassis_No').val();


        var data = { MAKE: make, COLOR: color, CATAGORY: catagory, MODEL: model, GLOBALLOCATION: GlobalLocation, MODELYEAR: modelYear, MODELYEARTILL: modelYearTill, TRANSMISSION: transmission, MINPRICE: minPrice, MAXPRICE: maxPrice, FUAL_TYPE: fual_type, DRIVE: drive, CHASSIS_NO: chassis_no }
        var jsonData = JSON.stringify(data); 

然后我在webservice參數中傳遞了相同的鍵名稱(鍵,JSON值對)

datatable = myStock.GetData(MAKE, MODEL, COLOR, CATAGORY, GLOBALLOCATION, DisplayType, MODELYEAR, MODELYEARTILL, "", TRANSMISSION, MINPRICE, MAXPRICE, FUAL_TYPE, DRIVE, "", 0, CHASSIS_NO, "", 0, "")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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