我想要做的是,在GridView_OnRowEditing事件中,我想专注于我正在编辑的单元格中出现的文本框。从那里我将触发一个javascript键盘,但我需要先关注文本框,然后才能做任何事情。
这是我目前的代码:
protected void GridView_OnRowEditing(object sender, GridViewEditEventArgs e)
{
var row = GridView.Rows[e.NewEditIndex];
var gridText = (TextBox) row.Cells[5].Controls[0];
gridText.Focus();
}
修改
这是我的GridView标记。我不是手动设置文本框。如果无论如何都要检索转换到RowEditing事件上的文本框的单元格的ID,请告诉我。谢谢。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AutoGenerateEditButton="True" DataKeyNames="RollNumber" DataSourceID="WoSource" HorizontalAlign="Center"
OnRowUpdating="GridView1_RowUpdating" AllowSorting="true" Visible="True" OnRowDataBound="GridView1_RowDataBound" OnRowEditing="GridView1_OnRowEditing" OnRowCancelingEdit="GridView1_OnRowCancelingEdit" Width="100%">
<Columns>
<asp:BoundField DataField="WorkOrderNo" HeaderText="WorkOrderNo" ReadOnly="True" SortExpression="WorkOrderNo" Visible="False"/>
<asp:BoundField DataField="RollNumber" HeaderText="RollNumber" ReadOnly="True" SortExpression="RollNumber" />
<asp:BoundField DataField="ModelNumber" HeaderText="ModelNumber" ReadOnly="True" SortExpression="ModelNumber" />
<asp:BoundField DataField="QtyGood" HeaderText="QtyGood" ReadOnly="True" SortExpression="QtyGood" />
<asp:BoundField DataField="QtyRun" HeaderText="QtyRun" SortExpression="QtyRun"><ControlStyle Width="100%" Height="100%" Font-Size="36px"></ControlStyle></asp:BoundField>
</Columns>
</asp:GridView>
答案 0 :(得分:1)
在@okisinch的帮助下,我发现我可以这样做:
$('#<%=GridView1.ClientID%> :input:enabled:visible:first').focus();
$('#<%=GridView1.ClientID%> :input:enabled:visible:first').select();
这样做的好处是我不需要找到一个能够聚焦的文本框ID。
这link是帮助我的资源。
修改:发现此代码也有效。请注意,#insideContainer是一个已实现的jquery键盘。我想我会添加触发器。
$(function () {
if ($('#<%=GridView1.ClientID%> :input:enabled:visible:first').val()) {
$('#<%=GridView1.ClientID%> :input:enabled:visible:first').focus();
$('#<%=GridView1.ClientID%> :input:enabled:visible:first').select();
$('#insideContainer').show();
} else {
$('#insideContainer').hide();
}
});