【问题标题】:OnRowEditing Edit Textbox FocusOnRowEditing 编辑文本框焦点
【发布时间】:2015-02-20 13:22:09
【问题描述】:

我想要做的是,在发生 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>

【问题讨论】:

  • 除非最近 ASP.Net 发生了重大变化,否则我很确定您无法在客户端上执行 C# 代码。 Aka 一旦你开始编辑 gridview,它要么重新加载(因为你已经连接了一个服务器事件),要么它什么也不做。但我可能是错的。
  • 请阅读here。应该会给你一些线索。
  • 这需要更多解释。现在我不清楚你想要什么以及你正在使用什么。这是一个网络应用程序吗?如果 Bjarke 是对的,那么您将无法在服务器端执行此操作。使用 javascript 事件来做到这一点。
  • 在 javascript/jquery 中,当您单击编辑(onClick 事件)时,您可以获得单击编辑的表格行并选择该表格行中的第一个 texbox。请提供更多信息(更多代码,网格的 html 部分),如果不是我,肯定会有其他人能够提供帮助。
  • 可以找到第一个。这是带有示例api.jquery.com/first 和更多示例blog.logentries.com/2012/09/… 以及更多stackoverflow.com/questions/2823471/… 的jquery 文档

标签: javascript c# jquery gridview


【解决方案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();
        }
    });

【讨论】:

  • 很高兴您找到了解决问题的方法。抱歉没有回复,我周末没电了。
  • 如果我想在嵌套的 grid.any 中执行此操作
猜你喜欢
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
相关资源
最近更新 更多