I would much rather see a single GridView like this:
<asp:gridview id="GridView2" runat="server" autogeneratecolumns="False"
OnRowDataBound="GridView1_RowDataBound"
DataSourceID="AccessDataSource1" Visible="true" >
<columns>
<asp:templatefield headertext="Devices And Services" visible="True">
<itemtemplate>
<%# Eval("itemDescription") %>
</itemtemplate>
</asp:templatefield>
<asp:templatefield headertext="Rate">
<itemtemplate>
<asp:label id="lblRate" runat="server"></asp:label>
</itemtemplate>
</asp:templatefield>
<asp:templatefield headertext="Number">
<itemtemplate>
<asp:textbox id="txtBoxNumber" width="100px" runat="Server" />
</itemtemplate>
</asp:templatefield>
<asp:templatefield headertext="Total">
<itemtemplate>
<asp:label id="lblTotal" runat="Server" />
</itemtemplate>
</asp:templatefield>
</columns>
</asp:gridview>
And I would make your code behind something like this:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRow itemData = (DataRow) e.Row.DataItem;
switch( DropDownList1.SelectedValue )
{
case "Platinum":
lblRate.Text = itemData["platinumRate"].ToString();
break;
case "Gold":
lblRate.Text = itemData["goldRate"].ToString();
break;
case "Silver":
lblRate.Text = itemData["silverRate"].ToString();
break;
default:
lblRate.Text = 0.0;
break;
}
TextBox txtBoxNumber = (TextBox)e.Row.FindControl("txtBoxNumber");
txtBoxNumber.Attributes.Add("onchange", "multiply(" + PR + ", '" + txtBoxNumber.ClientID + "','" + lblTotal.ClientID + "')");
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
GridView1.DataBind();
}
The idea behind this is to make your UI much cleaner and simpler. Logic that defines how the grid is displayed is now contained within the RowDataBound handler which also places that logic in a more appropriate location.
The one thing I haven't put in this code is object validation. You should always validate that objects like the "itemData" object and the "lblRate" and "txtBoxNumber" objects are not null before you try to use them. Never assume that they will be initialized properly.