我是新來的asp.net,我的標題可能有點混亂,所以讓我解釋一下,我也可能會這樣做是錯誤的方式,所以如果你有任何建議,將是大。使用dropdownlist在頁面加載期間自動填充頁面
當用戶登錄到我的網站時,他們會獲得其客戶和網站的下拉列表。他們可以有多個客戶或站點。一旦他們登錄,他們將被髮送到顯示有關該網站的信息的一般儀表板。
我做了一個名爲Sitepicker的sitedrop用戶控件,它使用存儲過程填充2個下拉列表。許多用戶只有1個客戶端和站點,所以我希望它自動選擇填充在下拉列表中的第一個客戶端和站點,並將其用於常規儀表板。
這是我如何填充網站dropdownlist。
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();
}
這是sitepicker的頁面加載。
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;
}
}
因此,所有的作品都很好。我的問題是一旦我的一般儀表板頁面加載,沒有任何標籤更新,除非我刷新。
下面是一般的儀表盤
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();
}
我不知道如果我這樣做是正確在Page_Load。一旦用戶登錄,它們將被引導至儀表板頁面,並且除非刷新,否則它將始終顯示「未選擇站點」。
關於如何正確地做到這一點的任何想法?
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> </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>
我編輯了自己的冠軍。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-02-11 22:11:29
如果您可以將此控件的HTML添加到您的問題中,將會有所幫助。另外,我沒有看到爲Session [「SiteID」]設置了值的任何地方。我錯過了嗎? – Melanie 2013-02-11 22:12:18
謝謝約翰,對不起,關於這個問題,我可以讀標題中的標籤,謝謝你糾正我的錯誤。 – Zach 2013-02-11 22:19:32