Acessando colunas invisíveis no GridView

Introdução

Quando você mostra dados no GridView você deve sempre tomar cuidado para que a primary key da tabela não seja mostrada.Neste artigo veremos como nós podemos acessar colunas invisíveis do GridView.

Acessando colunas invisíveis:

A primeira coisa que você precisa setar é a propriedade DataKeyNames para a chave primaria de sua tabela,nesse caso”PersonID”.

Código HTML

<asp:GridView runat=”server” AutoGenerateColumns=”False” CellPadding=”4″
DataKeyNames=”PersonID” DataSourceID=”mySource” ForeColor=”#333333″ GridLines=”None”
Width=”266px” OnSelectedIndexChanged=”gvMaster_SelectedIndexChanged”>
<FooterStyle BackColor=”#507CD1″ Font-Bold=”True” ForeColor=”White” />
<RowStyle BackColor=”#EFF3FB” />
<Columns>
<asp:CommandField ShowSelectButton=”True” />
<asp:BoundField DataField=”PersonID” HeaderText=”PersonID” InsertVisible=”False”
ReadOnly=”True” SortExpression=”PersonID” Visible=”False” />
<asp:BoundField DataField=”Name” HeaderText=”Name” SortExpression=”Name” />
<asp:TemplateField HeaderText=”Select”>
<ItemTemplate>
<asp:CheckBox runat=”server” />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<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>

Meu gridView possui 3 colunas (esquecendo a coluna do select) chamadas PersonID,Name e uma coluna de checkBox.A coluna PersonID é a chave-primária,e foi marcada como coluna invisível.Nós também temos um botão na página que quando clicado, faz um loop pelos controles do gridView, e mostra as primary keys ,das colunas que tem seu checkbox checado.

Vamos ver o evento do clique do botão:

protected void Button1_Click(object sender, EventArgs e){

string str = String.Empty;

int rowNo = 0;

foreach (GridViewRow row in gvMaster.Rows)

{

bool isChecked = ((CheckBox)row.FindControl(“CheckBox1”)).Checked;

if (isChecked)

{

// Gets the name of the primary key column our primary key is the PersonID

string primaryKey = gvMaster.DataKeyNames[0];

int personID = (int) gvMaster.DataKeys[rowNo].Value;

Response.Write(personID);

}

// increment the row count

rowNo++;

}

Response.Write(str);

}

Até a próxima!