No asp.net 2.0, você pode aninhar uma lista suspensa em um gridview. Isso é muito fácil, e o que estamos falando aqui é:
Em cada lista suspensa, um conteúdo diferente é vinculado. Por exemplo, no banco de dados Northwind, você pode usar GRIDVIEW para exibir cada categoria. Ao mesmo tempo, a categoria em cada linha pode ser listada na forma de uma caixa suspensa dropdonwlist.
de
implementação é apresentado abaixo.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
<Colunas>
<asp:BoundField DataField="CategoryID" HeaderText="CategoryID" />
<asp:BoundField DataField="CategoryName" HeaderText="Nome da categoria" />
<asp:TemplateField HeaderText="Produtos">
<ItemTemplate>
< asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Na seção codebehind,
protegido void Page_Load (remetente do objeto, EventArgs e)
{
se (!Page.IsPostBack)
{
// Isso ocorre porque Table[1] contém categorias
GridView1.DataSource = GetDataSet().Tables[1
]
;
}
Conjunto de dados privado GetDataSet()
{
string query = @"SELECT p.CategoryID,p.ProductID, p.ProductName FROM Produtos p
SELECT c.CategoryID,c.CategoryName FROM Categorias c"
; ;senha=123456";
SqlConnection minhaConexão = new SqlConnection(connectionString);
SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
DataSet ds = new DataSet();
ad.Fill(ds);
return ds;
}
No código acima, primeiro retornamos um conjunto de dados típico e o vinculamos ao gridview. Observe que há duas sentenças na instrução SQL. A primeira sentença é para retornar o produto e a segunda sentença é para retornar todas as categorias. vinculação Ao usar gridview, usamos
GridView1.DataSource = GetDataSet().Tables[1];, vincule o registro da categoria na primeira tabela ao gridview. Em seguida, temos que processar a lista suspensa na coluna do modelo. codifique da seguinte forma
void protegido GridView1_RowDataBound (remetente do objeto, GridViewRowEventArgs e)
{
DataTable minhaTabela = new
DataColumn productIDColumn = new DataColumn("
ProductIDColumn
"
)
; = new DataSet();
ds = GetDataSet();
intcategoriaID
= 0
;
{
categoriaID = Int32.Parse(e.Row.Cells[0].Text);
expressão = "CategoryID = " + categoriaID
ddl = (DropDownList)e.Row.FindControl("DropDownList1")
; ds.Tables[0].Select(expressão);
foreach (linha DataRow em linhas)
{
DataRow newRow = myTable.NewRow();
newRow["ProductID"] = row["
ProductID
"
]
;
DataSource = minhaTabela;
ddl.DataTextField
="
ProductName
"
;
O princípio aqui é aproximadamente o seguinte:
Primeiro, criamos uma tabela de dados, incluindo as colunas productid e productname, e depois vinculamos-a ao gridview e, em seguida, usamos
categoriaID = Int32.Parse(e.Row.Cells[0].Text
expressão = "CategoryID = " + categoriaID;
Construa uma expressão de filtro, aqui especificada como CategoryID, e depois passe
DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");
DataRow[] linhas = ds.Tables[0].Select(expressão);
, encontre todos os produtos cuja categoria seja igual a um determinado ID de categoria. Aqui, uma coleção de datarow é construída. Finalmente, use um loop.
, adicione todos os produtos de uma determinada categoria à tabela de dados e, finalmente, vincule a tabela de dados e a lista suspensa para realizar a função.