在页面加载期间使用dropdownlist自动填充页面



我是asp.net的新手,我的标题可能有点令人困惑,所以让我解释一下,我也可能做得不对,所以如果你有任何建议,那就太好了。

当用户登录到我的网站时,他们会得到一个客户端和网站的下拉列表。他们可以有多个客户端或站点。一旦他们登录,他们就会被发送到一个显示网站信息的通用面板。

我为站点下拉列表制作了一个名为Sitepicker的用户控件,该控件使用存储过程填充2个下拉列表。许多用户只有一个客户端和站点,所以我希望它自动选择下拉列表中填充的第一个客户端和网站,并将其用于常规面板。

这就是我填充网站下拉列表的方式。

    void PopulateSiteList()
    {
            DataAccess da = new DataAccess();
            da.AddParameter("portaluserid", Page.User.Identity.Name, DataAccess.SQLDataType.SQLString, 256);
            da.AddParameter("ClientID", Session["ClientID"], DataAccess.SQLDataType.SQLInteger, 4);
            DataSet SiteList = da.runSPDataSet("Portal_SitePickerSiteList");
            DropDownListSite.DataSource = SiteList;
            DropDownListSite.DataValueField = "SiteID";
            DropDownListSite.DataTextField = "SiteName";
            DropDownListSite.DataBind();
    }

这是网站选择器的页面加载。

    protected void Page_Load(object sender, EventArgs e)
    {   
        if (!IsPostBack)
        {       
            if (Session["ClientName"] != null)
                ClientButton.Text = Session["ClientName"].ToString();
            if (Session["SiteName"] != null)
                SiteButton.Text = Session["SiteName"].ToString();
            LoadClientDDL();
            if (DropDownListClient.Items.Count.Equals(1))
            {
                ClientButton.Enabled = false;
                DropDownListClient.Visible = false;
                int ClientID = int.Parse(DropDownListClient.SelectedItem.Value);
                ClientButton.Text = DropDownListClient.SelectedItem.Text;
                ClientButton.Visible = true;
                Session["ClientID"] = ClientID;
                Session["ClientName"] = DropDownListClient.SelectedItem.Text;
                {
                    PopulateSiteList();
                }
                if (DropDownListSite.Items.Count > 0)
                {
                    DropDownListSite.SelectedIndex = 1;
                    DropDownListSite.Visible = false;
                    SiteButton.Visible = true;
                    int SiteID = int.Parse(DropDownListSite.SelectedItem.Value);
                    SiteButton.Text = DropDownListSite.SelectedItem.Text;
                    Session["SiteID"] = SiteID;
                    Session["SiteName"] = DropDownListSite.SelectedItem.Text;
                }
            }

所以一切都很好。我的问题是,一旦我的通用仪表板页面加载,除非我点击刷新,否则不会更新任何标签。

这是通用仪表板的page_load

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["SiteID"] != null)
        {
            SiteID = int.Parse(Session["SiteID"].ToString());
             PopulateAccountData();
             PopulateAccountInformation2();
             PopulateSiteNodes();
        }
        else
             LabelSiteName.Text = "No Site Selected";
    }
void PopulateAccountData()
    {
        DataAccess da = new DataAccess();
        da.AddParameter("SiteID", SiteID, DataAccess.SQLDataType.SQLInteger, 4);
        SiteHeader = da.runSPDataSet("Portal_GetDashboardInfo");
        LabelGeneralManagerFirstName.Text = SiteHeader.Tables[0].Rows[0]["FirstName"].ToString();
        LabelGeneralManagerLastName.Text = SiteHeader.Tables[0].Rows[0]["LastName"].ToString();
        LabelSite.Text = SiteHeader.Tables[0].Rows[0]["SiteName"].ToString();
    }

我不确定我做得对不对。一旦用户登录,他们就会被引导到仪表板页面,除非刷新,否则它将始终显示"未选择网站"。

关于如何正确地做到这一点,有什么想法吗?

网站选取器的HTML代码

<table>
<tr>
<td><asp:Button ID="ClientButton" runat="server" OnClick="ClientButton_Click" Text="Select Client" /></td>
<td style="vertical-align:top"><asp:DropDownList ID="DropDownListClient" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownListClient_SelectedIndexChanged" Visible="False" Height="36px">
    </asp:DropDownList></td>
<td>&nbsp;&nbsp;</td>    
<td><asp:Button ID="SiteButton" runat="server" OnClick="SiteButton_Click" Text="Select Site" /></td>
<td style="vertical-align:top"><asp:DropDownList ID="DropDownListSite" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownListSite_SelectedIndexChanged" Visible="False" Height="36px">
    </asp:DropDownList></td>

</tr>
</table>

我想你想的是postback

转到您的xhtml并确保AutoPostback="True"在您的下拉列表中。

这将"postback",并导致您的页面刷新和应用更改。这允许在asp.net中如何进行客户端和服务器通信

这可能是一个很好的资源,为您提供更多信息:

http://msdn.microsoft.com/en-us/library/aa720416(v=vs.71).aspx

最新更新