at 1st you need to set CommandArgument=row index, then use this code in onrowcommand event.
.aspx code:
<asp:GridView ID="dtgView" runat="server" AutoGenerateColumns="False" CellPadding="4"
ForeColor="#333333" GridLines="None" ShowFooter="true" OnRowCommand="dtgView_RowCommand">
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="btnSelect" runat="server" CommandName="RSelect" CommandArgument='<%#Eval("RIndex") %>'
ImageUrl="~/Icon/page_edit.gif" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="ddl" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
.cs code:
class dtgData
{
int _RIndex;
public int RIndex
{
get { return _RIndex; }
set { _RIndex = value; }
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<dtgData> list = new List<dtgData>();
dtgData ob = new dtgData();
for (int i = 0; i <= 4; i++)
{
ob = new dtgData();
ob.RIndex = i;
list.Add(ob);
}
dtgView.DataSource = list;
dtgView.DataBind();
}
}
protected void dtgView_RowCommand(object sender, GridViewCommandEventArgs e)
{
int rowCount = 0;
foreach (GridViewRow row in dtgView.Rows)
{
if (rowCount == Convert.ToInt16(e.CommandArgument))
{
string str = ((DropDownList)row.FindControl("ddl")).SelectedValue.ToString();
}
rowCount++;
}
}
here,
dtgView=GridView
ddl=DropDownList inside your gridview
try this...