Olá pessoal,
Tenho um GridView com 2 colunas, uma delas é preenchida com nome de equipamentos que utilizo diretamente pelo banco de dados, a outra coluna, eu tenho botões que acionam esses equipamentos.
Quando eu clico no botão, ele passa como parâmetro para o equipamento o nome do equipamento que consta na coluna 1 do GridView.
O problema que estou tendo é que preciso alterar a cor dos botões quando é clicado, portanto eu envio para o RowCommand o índice da linha que eu clico para o botão alterar a cor.
Segue abaixo o código comentado referente ao projeto para análise:
GridView
[code]<asp:GridView ID=“GridView1” runat=“server” AutoGenerateColumns=“False” DataKeyNames="c1tbl392"
DataSourceID=“SqlDataSource1” EnableModelValidation=“True” OnRowCommand=“GridView1_RowCommand” >
<asp:BoundField DataField=“c1tbl392” HeaderText=“Equipamento” ReadOnly=“True” SortExpression=“c1tbl392” />
<asp:TemplateField HeaderText="Start / Stop">
<ItemTemplate>
<asp:Button ID="BtnStartStop" runat="server" CommandName="StartStop" Text="Start" Width="120px"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" BackColor="Green" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>[/code]
CodeBehind - Start equipamento - Pegando parâmetro do último registro
[code]int index = int.Parse((string)e.CommandArgument);
Button btnGeral = (Button)GridView1.Rows[index].FindControl(“BtnStartStop”);
string equip = “”;
if (btnGeral.Text == "Start")
{
//equip = e.CommandArgument.ToString();
//int ind = int.Parse((string)e.CommandArgument);//e.CommandArgument.ToString();
//equip = GridView1.Rows[ind].Cells["c1tbl392"].Text;
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
equip = (String)GridView1.DataKeys[row.RowIndex].Value; //Aqui está passando somente o valor do último indice, e não da linha do botão clicado
}
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = @"c:\apl\LisConnect.exe";
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;
startInfo.Arguments = "-p -" + equip;
Process exeProcess = Process.Start(startInfo);
}[/code]
Se alguem conseguir me dar um help agradeço.