我已经看到很多关于此问题的帖子,但是,他们都建议我们使用以下方法:dgv.CurrentCell
或dgv.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();
答案 0 :(得分:2)
您需要将所需的cotrol单元格转换为Textbox
控件,然后在其上调用Focus()
方法。
试试这个:
TextBox txtOrderQty = (TextBox) gvOrderDetails.Rows[row.RowIndex].FindControl("OrderQty");
txtOrderQty.Focus();
答案 1 :(得分:0)
为网格视图的SelectedindexChanged事件添加处理程序
Gridview1.SelectedRow.Focus();