如何让小部件根据默认值显示,该默认值通常在 selectedindexchanged 后通过回发显示?

How can I get a widget to display based on a default valuem which is normally displayed through postback after a selectedindexchanged?

我正在开发一个供公司内部使用的网站,我网站的仪表板页面上有几个小部件。一个小部件旨在显示工资信息以供管理人员查看。这个工资单小部件有一个下拉列表,它是根据用户角色填充的。然后,用户 select 在下拉列表中选择一个选项,然后自动 post 返回小部件内的面板,显示该商店 selection 的工资单信息概览。

这是我的 aspx,作为我所指内容的清晰视觉助手:

<asp:UpdatePanel ID="UpdatePanelPayroll" runat="server">
                    <triggers>
                        <asp:AsyncPostBackTrigger ControlID="ddlPayrollStores" EventName="SelectedIndexChanged"></asp:AsyncPostBackTrigger>
                    </triggers>
                    <contenttemplate>
                        <div class="dragbox-content">
                            <asp:Label ID="lblLabelOverTime" runat="server" Text="Total Overtime Hours: " Width="350px"></asp:Label>
                            <asp:Label ID="lblTotalOvertime" runat="server" Text=""></asp:Label>
                            <br />
                            <br />
                            <asp:Label ID="lblLabelHoliday" runat="server" Text="Total Holiday: " Width="350px"></asp:Label>
                            <asp:Label ID="lblTotalHoliday" runat="server" Text=""></asp:Label>
                            <br />
                            <br />
                            <asp:Label ID="lblLabelVacation" runat="server" Text="Total Vacation: " Width="350px"></asp:Label>
                            <asp:Label ID="lblTotalVacation" runat="server" Text=""></asp:Label>
                            <br />
                            <br />
                            <asp:Label ID="lbllableTotalHours" runat="server" Text="Total Hours: " Width="350px"></asp:Label>
                            <asp:Label ID="lblTotalStoreHours" runat="server" Text=""></asp:Label>
                            <br />
                            <br />
                            <asp:Label ID="lblLabelPay" runat="server" Text="Total Pay: " Width="350px"></asp:Label>
                            <asp:Label ID="lblTotalPay" runat="server" Text=""></asp:Label>
                            <br />
                            <br />
                        </div>
                    </contenttemplate>
                </asp:UpdatePanel>

我的 SelectedIndexChanged 方法是一个 switch 语句,它根据 selected 值调用 payroll() 方法的一个版本,它调用存储过程并通过变量将结果数据插入面板。我不会包含任何此代码,因为它不相关并且工作正常。加载我的仪表板后,我 select 从下拉列表中输入一个值,页面 post 返回并且信息显示正常。

我正在尝试做的事情: 根据用户角色将下拉列表默认为特定值(除了能够 select through values) 并让页面原始加载包括显示在与该默认值对应的小部件中的信息。到目前为止,我已经能够在每个用户角色的下拉列表中设置默认值,但是我在获取要显示的信息时遇到了问题。

我尝试了什么: 我尝试调用正确的 payroll() 方法,该方法在我默认 selected 值后立即调用数据库的下拉列表。通过调试,我发现在这种情况下,由于某种原因它没有超过存储过程调用的条件。我还尝试创建第二个没有参数的 selectedIndexChanged 方法,而不是 (object sender, EventArgs e) 并且还在我设置 select 后立即在 isUserInRole 条件下在我的 .cs 中手动调用它下拉列表的edvalue。最后,我尝试使用 Response.AppendHeader("Refresh", "0;URL=Dashboard.aspx");在我的 cs 中的几个地方,但这显然只是创建和刷新页面的无休止循环。

那么,感谢您阅读到这里。非常感谢任何关于从不同角度解决这个问题的想法甚至建议。

提前致谢!

没有发布的代码 - 您很可能在数据绑定 DropDownList 之前设置 SelectedValue 并调用 payroll() 方法(因此它仍然是 null)。