1. Add OnSelectedIndexChanged event to the DropDownList and set AutoPostBack True.
2. Inside the Event handler, make the TextBox visible.
HTML
<asp:GridView ID="TypeFruit" runat="server">
<Columns>
<asp:TemplateField HeaderText="Type">
<ItemTemplate>
<asp:DropDownList ID="ddlfruit" runat="server" OnSelectedIndexChanged = "Fruit_Changed" AutoPostBack = "true">
<asp:ListItem Value="0">Select</asp:ListItem>
<asp:ListItem Value="1">Fruit</asp:ListItem>
<asp:ListItem Value="2">Other</asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="TxtOther" runat="server" Visible="false"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Code
protected void Fruit_Changed(object sender, EventArgs e)
{
DropDownList ddlFruits = (sender as DropDownList);
TextBox txtOther = ((ddlFruits.NamingContainer as GridViewRow).FindControl("TxtOther") as TextBox);
txtOther.Visible = ddlFruits.SelectedItem.Value == "2";
}