我从来没有找到这个答案,如何传递存储过程的多个参数,这些参数在一个sharead或静态方法中stroed过程
我的网络服务需要作为共享或静态方法
[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();
}
我想将不同下拉列表和文本框中的值传递给下面的这个stroed过程
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有什么简单的方法吗?
答案 0 :(得分:0)
您必须使用对UI实例的引用。
在VB中你可以使用引用:My.Forms。[FormName] .DropdownList1.SelectedValue
在C#中,您可以使用My命名空间:http://msdn.microsoft.com/en-us/library/ms173136.aspx
我认为另一种兼容两者的方法就是访问[FormName] .ActiveForm
但是你需要将那个转换为你的[FormName]类。此外,特定表格也必须是“有效”。
假设您有一个名为:MainForm的表单 在VB中:
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)
如果您开始拥有多个可以激活的表单,您可能会遇到问题,应该开始寻找其他解决方案......或其他应用程序设计。
通常如果我的应用程序中有静态过程,我会自己创建我的表单的实例,因此我有一个参考,我可以轻松访问和识别(区别于其他实例)
编辑:我刚才意识到,我的帖子与问题没什么关系
我保留这篇文章,直到我知道这个帖子是否满足:How to get a label value from web user control to a content page using master page
答案 1 :(得分:0)
如果您正在使用Web服务的共享或静态方法,那么有一个解决方案可以使用jquery将多个参数值从控件传递到存储过程...
我做了什么,我从jquery获取控制值并将控制值传递给webservice参数...但我必须保持两个参数的同名和键名称(JSON的关键数据)... < / p>
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, "")