我想要做的是通過迭代轉發器和讀取一些控件的值:ASP .NET - 如何通過中繼器迭代?
foreach (RepeaterItem iter in TablePanier.Items)
{
string guid = ((HiddenField)iter.FindControl("guid")).Value.ToString();
// nombre exemplaires du livre
int nbExemplaires = int.Parse(((System.Web.UI.WebControls.TextBox)iter.FindControl("txtNbExemplaires")).Text.ToString());
}
正如你所看到的,我有一個HiddenValue和一個TextBox。不幸的是,這是行不通的,值不正確。
怎麼了?
謝謝!
編輯: 這裏是形式的全部代碼:
public partial class Panier : System.Web.UI.Page
{
Bussiness.Manager _manager = new Bussiness.Manager("MSSQLSERVER");
IEnumerable<Bussiness.iPanier> _paniers;
CurrencyConvertor _currencyConvertor = new CurrencyConvertor();
Bussiness.iCommande _commande;
int idPanier;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["login"] != null)
{
Security security = new Security();
_paniers = _manager.chargerPannierUtilisateur(Session["login"].ToString());
foreach (Bussiness.iPanier p in _paniers)
{
idPanier = p.id;
TablePanier.DataSource = p.Livres;
TablePanier.DataBind();
}
}
else
{
Response.Redirect("~/Accueil.aspx");
}
}
protected void btnCommande_Click(object sender, EventArgs e)
{
foreach (RepeaterItem iter in TablePanier.Items)
{
// id livre courant
if (iter.ItemType == ListItemType.Item || iter.ItemType == ListItemType.AlternatingItem)
{
string guid = ((HiddenField)iter.FindControl("guid")).Value.ToString();
int nbExemplaires = int.Parse(((System.Web.UI.WebControls.TextBox)iter.FindControl("txtNbExemplaires")).Text.ToString());
}
}
}
}
正如你所看到的,中繼器的構造層次的約束。我試圖在頁面的按鈕上發生事件時讀取數據。
有什麼想法?
代碼看起來不錯 - ?你從哪裏打電話嗎?如果在中繼器數據綁定之前調用它,則控件將不具有值。 – Ray 2010-04-04 11:56:56
我沒有看到您粘貼的代碼有任何問題。當你說這些數值「沒有正確讀取」時,你是什麼意思? – 2010-04-04 11:57:03
@Ray:中繼器數據綁定後。 @Matti virkkunen:值不讀取! – 2010-04-04 12:14:03