我創建了一個簡單的ASPX頁面列出GridView中的記錄。記錄是事件列表,其中一列是報告事件的人員的ID。ASPX回發問題與組合框
初始頁面顯示所有記錄,但我想爲ReportedBy列提供過濾器。我已經通過允許用戶在文本框中輸入ReportedByID然後單擊提交按鈕來實現這一功能。這將按照預期的過濾視圖刷新頁面。
該頁面的代碼如下:
public MyPage()
{
this.Load += new EventHandler(Page_Load);
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
{
DataAccessObj daObj = new DataAccessObj();
IncidentGrid.DataSource = daObj.GetIncidentsByReportedById(0);
IncidentGrid.DataBind();
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
int reportedById = 0;
if (int.TryParse(txtReportedById.Text, out reportedById) == false)
{
reportedById = 0;
}
DataAccessObj daObj = new DataAccessObj();
IncidentGrid.DataSource = daObj.GetIncidentsByReportedById(reportedById);
IncidentGrid.DataBind();
}
爲了讓用戶更加友好,我決定添加填充了ReportedBy名用戶一個下拉框選擇這將被用來點擊提交按鈕即可過濾。下拉框具有名稱作爲顯示項目,但值仍應設置爲ID。
我遇到的問題是,我從下拉框中得到的ID號總是作爲列表的第一個元素出現,而不是用戶在提交按鈕上單擊時選擇的那個。
與此實現這個頁面的代碼如下:
public MyPage()
{
this.Load += new EventHandler(Page_Load);
}
protected void Page_Load(object sender, EventArgs e)
{
DataAccessObj daObj = new DataAccessObj();
foreach (ReportedByItem repByItem in daObj.GetAllReportedBy())
{
ListItem listItem = new ListItem(repByItem.Name, repByItem.Id.ToString());
combobox.Items.Add(listItem);
}
if (IsPostBack == false)
{
IncidentGrid.DataSource = daObj.GetIncidentsByReportedById(0);
IncidentGrid.DataBind();
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
int reportedById = 0;
if (combobox.SelectedItem != null)
{
if (int.TryParse(combobox.SelectedItem.Value, out reportedById) == false)
{
reportedById = 0;
}
}
DataAccessObj daObj = new DataAccessObj();
IncidentGrid.DataSource = daObj.GetIncidentsByReportedById(reportedById);
IncidentGrid.DataBind();
}
任何幫助將衷心感謝。 TIA
我改變了代碼上面,但是當頁面重新加載,組合框爲空,並且在GridView尚未根據所選擇的項目填充。 – millie