如何设置默认的下拉列表选项

时间:2009-12-30 16:31:19

标签: c# javascript

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

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

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

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

3 个答案:

答案 0 :(得分:2)

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

两种方式都会使用用户名并对数据库运行查询以获取locationid,然后从下拉列表中选择它。

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

答案 1 :(得分:0)

我可能会使用jQuery,其方法是由onBlur为用户名框触发。此方法将在页面上调用AJAX方法以从数据库中获取默认位置ID。

根据您运行的.NET版本,您可以使用AjaxProASP.NET AJAX Toolkit来公开公共方法。 (我发现AjaxPro更容易使用)。

然后这只是编写jQuery的问题:

(非常粗略的代码,我可能有很多错误。如果你用Ajax Toolkit公开方法)

    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);
       }
     });

}

AjaxPro有点不同,因为它会生成页面JavaScript,您可以调用它来获取结果。

答案 2 :(得分:0)

哪个更贴近“位置”:用户还是计算机?

如果选择 计算机 的默认位置,而不是 用户 , 您可以考虑使用cookie来存储默认位置。一些优点:

  • 不需要javascript - 服务器选择下拉默认值。
  • 单个请求 - Cookie值包含在GET请求中。

实施起来会有一些警告:

  • Cookie的范围限定为客户端计算机的(Windows)用户帐户。如果您在同一台计算机(同一用户)上有两个位置不同的用户,那么这不是一个好的解决方案。
  • 有时浏览器会关闭Cookie。