Hi amolchikurte,
Based on your description, I understand that you want to manually control the TabIndex of the Controls:
1. DropDownList
2. GridView’s Button Controls (dynamical amount)
3. Button
For this issue, we can set the TabIndex property in GridView1_DataBound event handler. For example:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void GridView1_DataBound(object sender, EventArgs e)
{
int rowCount = GridView1.Rows.Count;
int i = 0;
for (i = 0; i < rowCount; i++)
{
Button bt = (Button)GridView1.Rows[i].Cells[0].Controls[0];
bt.TabIndex = (short)(i + 1);
}
Button1.TabIndex = (short)(i + 1);
}
System.Data.DataTable myTable;
protected void Page_Load(object sender, EventArgs e)
{
myTable = new System.Data.DataTable();
myTable.Columns.Add("ID", typeof(int));
myTable.Columns.Add("Name", typeof(String));
myTable.Rows.Add(1,"aaa");
myTable.Rows.Add(2, "bbb");
myTable.Rows.Add(3, "ccc");
GridView1.DataSource = myTable;
GridView1.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server" Style="position: static" TabIndex="1">
<asp:ListItem>aaa</asp:ListItem>
<asp:ListItem>bbb</asp:ListItem>
</asp:DropDownList>
<asp:GridView ID="GridView1" runat="server" Style="position: static" OnDataBound="GridView1_DataBound">
<Columns>
<asp:ButtonField ButtonType="Button" Text="Button" />
</Columns>
</asp:GridView>
<asp:Button ID="Button1" runat="server" Style="position: static" Text="Button" TabIndex="2" /></div>
</form>
</body>
</html>