webForumDet fria alternativet

TextBox i Repeater, textchange-problem

0 svar · 465 visningar · startad av matthew

matthewMedlem sedan okt. 2001166 inlägg
#1

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!

137 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)