Hej!
Hoppas det finns någon vänlig själ som i dessa juletider vill hjälpa till med ett problem.
Det är så att jag har en repeater, med en TextBox och en knapp (remove) i varje row.
jag lyckas inte få OnTextChanged-event att funka, så jag vill iallafall se till att värdet i TextBox'en överrensstämmer med DataSource... detta verkar ju inte ske automatiskt...
TextBox'en är bunden till DataSource enligt:
text='<%# DataBinder.Eval(Container.DataItem, "ArticleQuantity") %>'
och jag börjar i codebehinden så här:
DataSet dsTemp = new DataSet("Test");
DataTable dtTemp = new DataTable("TestTable");
private void Page_Load(object sender, System.EventArgs e)
{
if((DataTable)ViewState["dt"] != null)
{
dtTemp = (DataTable) ViewState["dt"];
dsTemp.Tables.Add(dtTemp);
Repeater1.DataSource = dsTemp;
Repeater1.DataBind();
}
else
{
dtTemp.Columns.Add("ArticleId", typeof(int));
dtTemp.Columns.Add("ArticleName",typeof(string));
dtTemp.Columns.Add("ArticleQuantity", typeof(int));
}
Jag lyckas enkelt med att lägga till och ta bort rader, inga problem alls... Sparar även DataTable't som ett ViewState.
Problemet är att jag, då jag inte fått någon OnTextChanged-event att funka, på vissa ställen skulle vilja kunna sätta källan (int-värdet i kolumnen i den raden i det DataTable't) till värdet som representeras i TextBox'en:
foreach(RepeaterItem item in Repeater1.Items)
{
try
{
dtTemp.Rows[item.ItemIndex]["ArticleQuantity"] = Int32.Parse(((TextBox)item.Controls[1]).Text);
ViewState["dt"] = dtTemp;
} catch(Exception){}
}
dsTemp.Tables.Clear();
dsTemp.Tables.Add(dtTemp);
Repeater1.DataSource = dsTemp;
Repeater1.DataBind();
Eftersom koden körs men det ändå blir värdet som satts vid skapande av nya rader, i detta fall så satt jag ArticleQuantity till 100 som test.
Om jag ändrar värden i TextBox'en och trycker på en knapp som går igenom alla Items, så vid nästa Page_Load så blir det fortfarande 100 på varenda TextBox.
Då undrar jag om man verkligen får ut texten i TextBox'en genom kontrollerna så där? Eller måste man göra på nått helt annat sätt?
I slutändan vill jag ju egentligen ha en OnTextChanged-event...
Kanske bättre att inte använda Repeater? Fast tycker att Repeater har sina fördelear, om man lyckas få kontroll över sina Controls
Vad gör jag för fel?
Vore ytterst tacksam för svar!