Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何判断用户是否更改了dropdownlist_C#_Asp.net_Drop Down Menu_Postback_Viewstate - Fatal编程技术网

C# 如何判断用户是否更改了dropdownlist

C# 如何判断用户是否更改了dropdownlist,c#,asp.net,drop-down-menu,postback,viewstate,C#,Asp.net,Drop Down Menu,Postback,Viewstate,我有一个DropDownList,我的填充方法如下: ddlStaff.Items.Clear(); ddlStaff.Items.AddRange(staff.Select(x => new ListItem(x.Name, x.Id.ToString()) { Selected = (x == DefaultStaff) }).ToArray()); ddlStaff位于一个UpdatePanel中,还有另一个DropDownList,它的SelectedIndexChanged

我有一个
DropDownList
,我的填充方法如下:

ddlStaff.Items.Clear();
ddlStaff.Items.AddRange(staff.Select(x => new ListItem(x.Name, x.Id.ToString())
  { Selected = (x == DefaultStaff) }).ToArray());
ddlStaff位于一个
UpdatePanel
中,还有另一个
DropDownList
,它的
SelectedIndexChanged
UpdatePanel
的AsyncPostBackTrigger。该事件更改范围,重新填充
人员
列表,然后再次运行上述操作

一切正常,但我想做的是知道用户是否更改了ddlStaff,以便我基本上可以执行类似
{Selected=(x==(UserSelectedStaff??DefaultStaff))}
。有没有一种内置的方法可以做到这一点?或者我只需要记住我最后发送的员工是什么(在会话或视图状态中),然后在返回时将其与实际选择的员工进行比较


编辑以澄清:我的意图是我可以将填充了staff的ddlStaff发送出去,并且已经选择了默认staffmember。如果用户选择staffmember,然后更改更高级别的作用域下拉列表,我希望回发不会覆盖用户选择的staffmember(当然,除非staffmember不在新作用域中)。但是,如果用户没有更改staffmember,我应该用新作用域的默认值覆盖它。

一旦响应发送到客户端,服务器上就没有状态,因此我相信您不能真正执行(x==UserSelectedStaff);在使用更新面板的场景中,我看到的只有一些状态机制,ViewState可能是基于DefaultStaff对象相当轻量级的基础上的。

使dropdownlist“autopostback=True”,并在页面加载事件检查中

if (!IsPostBack)
    {
      //now you know user made a change

    }

我就是这么想的。谢谢你帮我确认。我不确定是不是因为我的问题不清楚,但这对我来说似乎不是正确的解决方案。这将启动回发,只是为了检查下拉列表是否更改。我仍然需要拿出逻辑来在viewstate中存储previous/current的状态,这样我就知道该怎么做了。此外,由于它会来回发送网络流量,因此效率要低得多。尤其是当下拉列表从A变为B,然后又变回B时。在这种情况下,我们免费发送了两次回邮。对于Ricky.G解决方案,我只需要状态逻辑,其他什么都不需要。