У меня есть вид сетки в качестве UpdatePanel так:потерять фокус текстовых полей в GridView
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<asp:Panel ID="pnl_lect" runat="server">
<asp:GridView ID="gv_ques" runat="server" CssClass="formTable cr_center" AutoGenerateColumns="False"
ShowFooter="True" OnRowDataBound="gv_ques_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="عناصر التقييم">
<ItemTemplate>
<asp:Label ID="lbl_ques" runat="server" Text='<%# Bind("que_desc") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="Label1" runat="server" Text="الاجمالي"></asp:Label>
</FooterTemplate>
<ItemStyle Width="45%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="ممتاز (4)">
<ItemTemplate>
<telerik:RadNumericTextBox ID="txt_1" runat="server" DbValue='<%# Bind("grade_id1") %>'
AutoPostBack="true" Width="60px" MinValue="0" MaxValue="999999999" OnTextChanged="txt_1_TextChanged">
<NumberFormat GroupSeparator="" DecimalDigits="0" />
</telerik:RadNumericTextBox>
<asp:HiddenField ID="hf_1" runat="server" Value="1" />
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lbl_1" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="جيد جدًا (3)">
<ItemTemplate>
<telerik:RadNumericTextBox ID="txt_2" runat="server" DbValue='<%# Bind("grade_id2") %>'
AutoPostBack="true" Width="60px" MinValue="0" MaxValue="999999999" OnTextChanged="txt_1_TextChanged">
<NumberFormat GroupSeparator="" DecimalDigits="0" />
</telerik:RadNumericTextBox>
<asp:HiddenField ID="hf_2" runat="server" Value="2" />
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lbl_2" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="جيد (2)">
<ItemTemplate>
<telerik:RadNumericTextBox ID="txt_3" runat="server" DbValue='<%# Bind("grade_id3") %>'
AutoPostBack="true" Width="60px" MinValue="0" MaxValue="999999999" OnTextChanged="txt_1_TextChanged">
<NumberFormat GroupSeparator="" DecimalDigits="0" />
</telerik:RadNumericTextBox>
<asp:HiddenField ID="hf_3" runat="server" Value="3" />
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lbl_3" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="مقبول (1)">
<ItemTemplate>
<telerik:RadNumericTextBox ID="txt_4" runat="server" DbValue='<%# Bind("grade_id4") %>'
AutoPostBack="true" Width="60px" MinValue="0" MaxValue="999999999" OnTextChanged="txt_1_TextChanged">
<NumberFormat GroupSeparator="" DecimalDigits="0" />
</telerik:RadNumericTextBox>
<asp:HiddenField ID="hf_4" runat="server" Value="4" />
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lbl_4" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ضعيف (0)">
<ItemTemplate>
<telerik:RadNumericTextBox ID="txt_5" runat="server" DbValue='<%# Bind("grade_id5") %>'
AutoPostBack="true" Width="60px" MinValue="0" MaxValue="999999999" OnTextChanged="txt_1_TextChanged">
<NumberFormat GroupSeparator="" DecimalDigits="0" />
</telerik:RadNumericTextBox>
<asp:HiddenField ID="hf_5" runat="server" Value="5" />
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lbl_5" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
я теряю фокус с каждым постбэка так я пишу следующее:
protected void txt_1_TextChanged(object sender, EventArgs e)
{
int progSer = int.Parse(Session["prog_serial"].ToString());
int total = 0;
RadNumericTextBox txt = (RadNumericTextBox)sender;
GridViewRow r = (GridViewRow)txt.NamingContainer;
TableCell cell = null;
Control parent = txt;
while ((parent = parent.Parent) != null && cell == null)
cell = parent as TableCell;
int indexOfTextBoxCell = -1;
if (cell != null)
indexOfTextBoxCell = r.Cells.GetCellIndex(cell);
foreach (GridViewRow row in gv_ques.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
total = total + int.Parse(((RadNumericTextBox)row.Cells[indexOfTextBoxCell].Controls[1]).Value.ToString());
}
}
((Label)gv_ques.FooterRow.Cells[indexOfTextBoxCell].Controls[1]).Text = total.ToString();
ScriptManager.RegisterStartupScript(this, this.GetType(), "selectAndFocus", "$get('" + txt.ClientID + "').focus();$get('" + txt.ClientID + "').select();", true);//the focus
}
Теперь я выхожу из текстового поля, фокус все еще не совсем правильно установлен. Я должен занести вкладку один раз после обратной передачи для ее работы. Как настроить фокус на вкладке, а не на текущем текстовом поле?
спасибо так много '<язык = тип сценария "JavaScript"= "текст/JavaScript"> $ (': текст') на ("фокус", функция() {. localStorage.setItem ("focusItem", this.id); // здесь задается идентификатор localStorage идентификатора элемента textbox}}; $ (document) .ready (function() {$ ('#' + localStorage.getItem ("focusItem")). focus();}); 'но он не работает успешно. «autopostback = true» текстового поля, поэтому после того, как я перейду на вкладку «click», чтобы перейти к следующему блоку, он перейдет в первое текстовое поле в сетке! –