C# 不同aspx页面上的下拉列表需要;“联系”;相互之间

C# 不同aspx页面上的下拉列表需要;“联系”;相互之间,c#,jquery,asp.net,C#,Jquery,Asp.net,我遇到的问题不是紧急情况,但我不知道怎么做。我有两个aspx网络表单页面。每个页面上都有一个下拉列表。两者都由来自sql server的相同数据源填充。问题是,如果我在第1页选择一个值,然后转到第2页,它将重新填充下拉列表(因为它是从datasrouce填充的)。例如,如果第2页下拉列表是Hamilton,然后单击第2页Hamilton需要显示。当前,它将显示数据库中的第一条记录。这正变得越来越人性化,也不是什么大问题。我不知道在这一点上,我真的在哪里,所以我没有任何代码显示。这似乎是一个独特的

我遇到的问题不是紧急情况,但我不知道怎么做。我有两个aspx网络表单页面。每个页面上都有一个下拉列表。两者都由来自sql server的相同数据源填充。问题是,如果我在第1页选择一个值,然后转到第2页,它将重新填充下拉列表(因为它是从datasrouce填充的)。例如,如果第2页下拉列表是Hamilton,然后单击第2页Hamilton需要显示。当前,它将显示数据库中的第一条记录。这正变得越来越人性化,也不是什么大问题。我不知道在这一点上,我真的在哪里,所以我没有任何代码显示。这似乎是一个独特的问题,因为我找不到任何论坛在这方面。我不确定jQuery是否是一种有效的方法。以下是我在页面加载期间填充下拉列表的方式

受保护的无效页面加载(对象发送方、事件参数e) {

//Session[“dship”]=ddlDealershipRec.SelectedIndex;
conn.Open();
//这将选择用户名等于当前登录用户的用户ID。
SqlCommand cmdUserID=new SqlCommand(“从UserName='”+User.Identity.Name+'”,conn的用户中选择UserID);
selectUserID=Convert.ToString(cmdUserID.ExecuteScalar());
//选择用户ID与用户名相等的位置ID。
SqlCommand cmdLocationID=新的SqlCommand(“从UserControl中选择LocationID,其中UserID='”+selectUserID+“'”,conn);
selectLocationID=Convert.ToString(cmdLocationID.ExecuteScalar());
//选择用户ID等于用户名的公司或商店。
SqlCommand cmdCorporateStore=new-SqlCommand(“从UserID='“+selectUserID+'”,conn的用户中选择MAX(CorporateStore));
选择CorporateTore=Convert.ToString(cmdCorporateTore.ExecuteScalar());
//选择用户是否为管理员。
SqlCommand cmdAdmin=new SqlCommand(“从UserID='“+selectUserID+'”,conn的用户中选择MAX(Admin));
选择admin=Convert.ToString(cmdAdmin.ExecuteScalar());
康涅狄格州关闭();
//用于在管理员登录时显示“车库”。
如果(选择Admin==“是”)
{
Control allUsers=this.Page.Master.FindControl(“登录”).FindControl(“登录视图”).FindControl(“ulmenu”).FindControl(“allUsers”);
诱惑者。可见=真实;
}
gvVehicleTEMP.ControlStyle.Font.Size=8;
如果(!IsPostBack)
{
ddleDealershipRec.Items.Clear();
List locationIDList=新列表();
List locationList=新列表();
conn.Open();
//用于填充dropDownList,具体取决于登录的用户。
使用(SqlDataReader=cmdLocationID.ExecuteReader())
{
while(reader.Read())
{
int locationID=reader.GetInt32(0);
locationIDList.Add(locationID);
}
康涅狄格州关闭();
}
foreach(locationIDList中的int id)
{
conn.Open();
SqlCommand cmdLocation=new SqlCommand(“从LocationID=”“+id+”“按LocationName ASC排序”的位置中选择LocationName”,conn);
使用(SqlDataReader=cmdLocation.ExecuteReader())
{
while(reader.Read())
{
字符串位置=reader.GetString(0);
位置列表。添加(位置);
}
康涅狄格州关闭();
}
}
foreach(locationList中的字符串位置)
{
添加(新列表项(位置));
}
}
}
提前谢谢你


编辑:我已从第一页添加了整个页面加载。正如您所看到的,这里发生了很多事情,它是由数据库驱动的。我不得不做一些与预期不同的事情,因为我正在使用Active Directory的表单身份验证。select cmdLocationID用于从我的“UserControl”表中获取数据。此表只有两列,UserID和LocationID。因为我的UserID是1,我有所有的7或8个存储,所以有7或8个UserID和1,它与一个存储相关。然后我将其保存为字符串,并将其添加到位置列表中,然后填充下拉列表

从高级视图中,您可以做的是将选择的唯一标识符(如DropDownList的SelectedIndex)保存到用户状态,然后在加载其他页面时,将DropDownList与该唯一标识符匹配

。一种方式是会话状态。以下是如何在会话状态下保存信息:

Session["VariableName"] = (int)ddlNameOfDropdownList.SelectedIndex;
然后,您可以在另一个时间访问另一个页面上的会话变量(默认情况下,它们会在20分钟内超时,因此,如果您的表单花费的时间超过这个时间,您可能需要使用类似ViewState的内容)

要访问会话变量并在另一个页面上使用它,可以在PageLoad中添加:

ddlOtherDropdownList.SelectedIndex = Convert.ToInt32(Session["VariableName"]);
当您访问会话变量时,我没有检查空值,但这些是辅助问题

编辑:添加了显式强制转换

编辑:您希望在第一页的按钮上添加一个单击事件,将您重定向到第二页,如下所示:

void btnToSecondPage_Click(Object sender, EventArgs e)
{
    Session["dropdownSelected"] = (int)ddlDealershipRec.SelectedIndex;
    Response.Redirect("SecondPage.aspx");
}
这将在转到下一页之前将所选索引保存为会话变量。然后,在第二个页面加载中,在填充DDLDeldershipRec之后,您需要:

ddlDealershipRec.SelectedIndex = Convert.ToInt32(Session["dropdownSelected");

基本上,您只需要从ddl发回该ID。从那里,您可以将第2页上ddl的选定项设置为刚刚发布回来的ID。如果您展示一些关于如何将数据返回控制器的代码,我们可以为您提供更具体的帮助。@JonLaMarr以上是我在两个页面上填充下拉列表的方式。表中有8条记录,一旦加载页面,就会将列表中的项目添加到drop d中
ddlDealershipRec.SelectedIndex = Convert.ToInt32(Session["dropdownSelected");