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!