Hur gör man för att flytta markören till en viss TextBox i uppdatering i en DataView Detta måste göras med client side script. Du har försökt med ett anrop server side, dessutom fel sytnax för server side kod. (måste ligga innanför <script runat="server">)Flytta markören till en viss TextBox i en DataView
<code>
<asp:TemplateField HeaderText="HRes" SortExpression="HemmaRes">
<EditItemTemplate>
<asp:TextBox ID="scoreTextBox" runat="server" Text='<%# Bind("score") %'> </asp:TextBox>
</EditItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="25px" />
<ItemTemplate>
<asp:Label ID="scoreLabel" runat="server" Text='<%# Bind("score") %>'></asp:Label>
</ItemTemplate>
<ControlStyle Width="25px" />
</asp:TemplateField>
scoreTextBox.SetFocus;
string matchId = ((TextBox)grid.Rows[e.RowIndex].FindControl("matchIdTextBox")).Text;
string score = ((TextBox)grid.Rows[e.RowIndex].FindControl("scoreTextBox")).Text;
string vsscore = ((TextBox)grid.Rows[e.RowIndex].FindControl("vsscoreTextBox")).Text;
</code>
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0201: Only assignment, call, increment, decrement, and new object expressions can be used as a statement
Source Error:
Line 46: {
Line 47: // Retrieve updated data
Line 48: scoreTextBox.SetFocus;
Line 49: string matchId = ((TextBox)grid.Rows[e.RowIndex].FindControl("matchIdTextBox")).Text;
Line 50: string score = ((TextBox)grid.Rows[e.RowIndex].FindControl("scoreTextBox")).Text;
Sv: Flytta markören till en viss TextBox i en DataView
Enklaste lösningen är så här:
titta på HTML-källan i webbläsaren och leta upp din textbox. Undersök vilket ID den har fått.
(Det blir mer än "scoreTextBox" eftersom den ligger i en Template)
sätt in följande script i body-taggen:
<body onload="document.getElementById('scoreTextBoxNAMN').focus()">
Eller kolla i hjälpen efter RegisterStartupScript.Sv:Flytta markören till en viss TextBox i en DataView
du ska använda dig av den textboxens ClientId, och det blir en serverside + clientside lösning,
på servern i ditt bind event:
ClientScript.RegisterStartupScript(Page.GetType(),"mittStartupScript","doSetFocus('" + minTextBox.ClientId + "')",true);
och i javascript
function doSetFocus(val)
{
var obj = document.GetElementById(val);
if(obj)
obj.Focus();
}
det är dock så att startup scriptet körs innan vissa kontroller renderats på klienten så ibland får man gå ifrån registerstartupscript och göra en "ful" lösning.
finns en annan ful lösning för internetexplorer och det är att sätta namn på din textbox och sedan använda document.GetElementByName("mittnamn") i setfocus funtionen. men det fungerar såvitt jag vet bara i IE.