2009-12-30 95 views
0

我有一个登录页面,用户输入用户名(文本框),密码(文本框)和位置(下拉列表),然后登录。如何设置默认下拉列表selecteditem

在服务器页面上,对于位置dropdonwlist我有一个连接字符串来访问SQL服务器数据库,以获取位置表中的所有位置并将数据绑定到下拉列表。

对于dropdownlist.SelectedItem,我想要做的是,一旦用户输入用户名,onChange,特定用户的默认位置应该是用户单击登录之前的选定位置。此默认位置由登录表中的locationID(FK)定义,其中loginId,username,password和locationID作为其列。我想要在服务器端检索locationID(访问数据库表)的过程,然后将locationID传递给客户端,我可以调用该函数根据locationID选择默认的下拉列表项。有什么办法来完成这个?由于

C#编程语言 数据库SQL Server 2005

回答

2

有两种方法可以完成这项工作:AJAX或Postback。 AJAX将是更好的方式,回发将是更简单的方式,这取决于你真的...

这两种方式将采取用户名和运行查询对数据库获取位置ID,然后从下拉列表中选择它。

然而,从逻辑上讲,这可能是一个安全漏洞(除非内部运行)黑客可以生成随机用户名,并查看他们是否返回有效位置,因为不需要passwrod。这导致我质疑为什么你需要选择一个位置,如果它已经在数据库中了?您可以在验证用户时选择它...

+0

“为什么你需要选择一个位置,如果它已经在数据库中了?”我们想跟踪用户的位置,通常他们会在默认位置,但有时他们正在旅行。税率(例如税)将根据他们现在的位置而改变。 – Akil 2009-12-30 17:14:57

+0

啊,我明白了。我仍然建议不要自动选择位置。您可能需要添加一个“自动”选项,该选项应该是默认值,并且可以针对“漫游”用户进行更改。 – Ariel 2009-12-31 03:00:42

0

我可能会使用jQuery,与同时通过的onblur为用户名框引发的方法。此方法会在您的页面上调用AJAX方法以从数据库获取默认位置ID。

根据您正在运行的.NET版本,您可以使用AjaxProASP.NET AJAX Toolkit公开方法。 (我发现AjaxPro更容易使用)。 (如果你暴露与AJAX工具包的方法在这里非常粗糙的代码,我大概得到了很多的东西错了。)

function doSomething() 
    { 
     var username = $.("#textbox").val(); 

     $.ajax({ 
      type: "POST", 
      url: "default.aspx", 
      data: "username=" + username, 
      success: function(result){ 
       // Select the proper option here based on the result 
       $.("#dropdown").val(result); 
     } 
    }); 

} 

然后,它只是一个写了jQuery的事AjaxPro有点不同,它会生成页面JavaScript,您可以调用它来获取结果。

+0

您的代码需要编辑... var username = $。(“#textbox”)。val(); url缺少方法的名称,数据需要是json对象(“ {'username':''+ username +''}“ 我知道这只是一个示例,但为什么不把它作为一个工作示例... :) – Ariel 2009-12-30 16:52:51

+0

如果它是一个简单的帖子,它并不需要是一个JSON对象,但可以是查询字符串。在将它查找到数据库之前,您一定要在服务器端方法中清理它! – James 2009-12-30 17:29:17

0

这与“位置”关系更密切:用户还是计算机?

如果是适当选择一个默认位置为计算机而不是用户, 你可以考虑使用一个Cookie存储的默认位置。一些优点:

  • 没有JavaScript要求 - 下拉默认是由服务器选择。
  • 单个请求 - cookie值包含在GET请求中。

这将是相对容易一些注意事项来实现:

  • 一个cookie可以被限制在客户端计算机的(窗口)用户帐户。如果您在同一台计算机上有两个用户(具有相同的用户)并且位置不同,那么这不是一个好的解决方案。
  • 有时浏览器会关闭cookie。