Hej, de värden du uppdaterast på klienten är inte med i ditt viewstate därför försvinner dem. Tackar för svaret! då måste du requesta och uppdatera alla värden Jag både förstår, och inte....:) ok då är jag med, läste inte dina script så nog trode du hade textboxar i gridden Ja, jag misstänkte att det inte var jättenkelt... kom på en sak , du kanske kan ajaxifiera sidan, och köra dina postbacks utan att skärmen laddas om? Hej,GridView: Uppdatera BoundField på klienten utan postback
Jag har en gridview där jag uppdaterar ett BoundField med javascript, utan postback.
Problemet är att vid postback försvinner mitt nya värde. Även när jag försöker spara hela grid:en.
Scriptet fungerar alltså, men det är när sidan postas som värdet försvinner.
Så här ser javascriptet ut:
<code>
function updateGridColumn()
{
var gridCell = getGridColumn('<%=GridView1.ClientID %>', 1, 0);
var txt = document.getElementById('<%= txtComment.ClientID %>');
gridCell.innerText = txt.value;
txt.value = "";
}
function getGridColumn(gridId,rowIdx,colIdx)
{
var gridRow = getGridRow(gridId,rowIdx);
if (null != gridRow)
{
return gridRow.cells[colIdx];
}
return null;
}
function getGridRow(gridId,rowIdx)
{
var gridViewCtl = document.getElementById(gridId);
if (null != gridViewCtl)
{
return gridViewCtl.rows[rowIdx];
}
return null;
}
</code>
Hur kan jag göra för att behålla värdena?? Jag vill inte göra postback för att uppdatera grid:en.
Tacksam för hjälp!!
/JockeSv: GridView: Uppdatera BoundField på klienten utan postback
du kan i ett event som heter loadviewstate, requesta värdena och uppdatera dina kontroller med de requestade värdena. Så kommer de inte att försvinna vid en postback , och du behöver inte uppdatera gridden.
Sv:GridView: Uppdatera BoundField på klienten utan postback
Hur requestar jag gridden och specifika kolumner+rader och ändrar detta??
Det kan vara så att användaren ändrar i lite olika kolumner och rader sen gör något som orsakar en postback. Då vill jag ju att alla värdena stannar kvar.
Känner att jag är ute på lite hal is....:)
/JockeSv: GridView: Uppdatera BoundField på klienten utan postback
enklast är nog att loopa igenom controllerna som finns i raderna på gridden.
något i stil med detta ("pseudokod")
foreach(var rad in grid.items)
{
var controllatthittta = rad.controls.findcontrol("textboxen");
controllatthitta.Text = Request(controllatthitta.clientid);
}Sv:GridView: Uppdatera BoundField på klienten utan postback
Så här är det:
Värdet hämtas ifrån en textbox. Denna textbox ligger inte i gridden, den ligger utanför och det finns bara EN textbox på sidan.
Värdet från textboxen lägger jag sedan i en cell på gridden, genom ".innerText". Så gridden har ju inga controller att loopa, antar jag.
Är du med hur jag menar?
Sen har jag satt en breakpoint i:
<code>
Protected Overrides Sub LoadViewState(ByVal savedState As Object)
MyBase.LoadViewState(savedState)
End Sub
</code>
Men man kommer aldrig hit?
/JockeSv: GridView: Uppdatera BoundField på klienten utan postback
blir betydligt jobbigare att lösa det, antagligen måste du använda hidden fält på något sätt som du sätter med samma värden som dina innerText på cellerna.
och sen gör något i stil med den loopen jag gjorde tidigare ,men request på hiddenfälten istället.
fast det blir en rätt bökig lösning.
har ingen ide om varför eventet inte körs.Sv:GridView: Uppdatera BoundField på klienten utan postback
Hmm...jag få fundera...Sv: GridView: Uppdatera BoundField på klienten utan postback
http://www.asp.net/learn/ajax/tutorial-01-cs.aspxSv:GridView: Uppdatera BoundField på klienten utan postback
Lite sent svar av mig här...
Sidan är redan ajaxfierad. Jag löste det med hidden-fält. Lite bökigt kanske men det funkar.
Tack för hjälpen!
/Jocke