GridView - 将焦点设置为特定单元格

时间:2014-02-14 23:31:06

标签: c# asp.net gridview

我已经看到很多关于此问题的帖子,但是,他们都建议我们使用以下方法:dgv.CurrentCelldgv.Rows[row].Cells[cellno].Selected。 Intellisense没有找到这样的方法。

我在gridview中有一个文本框,我使用OnTextChanged方法。然后,在我的C#代码中,我更新了这个数量,然后网格自动刷新,并返回到顶行,即使我们向下滚动了几页。我也尝试在.aspx页面的'Page'部分中输入MaintainScrollPositionOnPostback =“true”,但似乎没有做任何事情。我们在.Net Framework 4.0上。

<asp:GridView ID="gvOrderDetails" runat="server" AlternatingRowStyle-BackColor="#FAFAFA" Width="940px" AutoGenerateColumns="False" AllowSorting="True" OnSorting="SortOrderDetails"
OnRowCommand="gvOrderDetails_RowCommand" EmptyDataText="No Data to Display"
DataKeyNames="STOREORDNUM" HeaderStyle-Height="22px" 
onselectedindexchanged="gvOrderDetails_SelectedIndexChanged">
<AlternatingRowStyle BackColor="White" /><EditRowStyle BackColor="#2461BF"/>
<FooterStyle BackColor="LightGray" Font-Bold="False" ForeColor="Black" />
<HeaderStyle BackColor="LightGray" Font-Bold="False" ForeColor="Black" BorderWidth="1px" BorderColor="Gray"/><PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB"  Height="22px"/>
<Columns>
     <asp:BoundField DataField="ITMCD" HeaderText="Item Code" SortExpression="ItemCode" >
     </asp:BoundField>
     ....                             
     <asp:TemplateField HeaderText="Order Qty" SortExpression="OrderQty" >
         <ItemTemplate>
            <asp:TextBox ID="OrderQty" runat="server" Width="36" MaxLength="5" class="numberinput" AutoPostBack="true" OnTextChanged="buttonUpdateQty_Click" Text='<%# Bind("ORDERQTY") %>' ></asp:TextBox>                                   
         </ItemTemplate>
     </asp:TemplateField>
  </Columns>                        
 </asp:GridView>

在后面的代码中,我尝试了这两件事:

gvOrderDetails.Rows[row.RowIndex].FindControl("OrderQty").Focus();
gvOrderDetails.Rows[row.RowIndex].Cells[7].Controls[0].Focus();

2 个答案:

答案 0 :(得分:2)

您需要将所需的cotrol单元格转换为Textbox控件,然后在其上调用Focus()方法。

试试这个:

TextBox txtOrderQty = (TextBox) gvOrderDetails.Rows[row.RowIndex].FindControl("OrderQty");
txtOrderQty.Focus();

答案 1 :(得分:0)

为网格视图的SelectedindexChanged事件添加处理程序

Gridview1.SelectedRow.Focus();