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
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!