En asp.net 2.0, puede anidar una lista desplegable en una vista de cuadrícula. Esto es muy fácil y de lo que estamos hablando aquí es.
En cada lista desplegable, se vincula contenido diferente. Por ejemplo, en la base de datos Northwind, puede usar GRIDVIEW para mostrar cada categoría. Al mismo tiempo, la categoría en cada fila se puede enumerar en forma de un cuadro desplegable de lista desplegable. Todos los productos a continuación. El método de implementación se presenta a continuación.
El primero es el código en la parte de la página.
<asp:GridView ID="GridView1" runat="servidor" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
<Columnas>
<asp:BoundField DataField="CategoryID" HeaderText="CategoryID" />
<asp:BoundField DataField="CategoryName" HeaderText="Nombre de categoría" />
<asp:TemplateField HeaderText="Productos">
<ItemTemplate>
< asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
En la sección de código subyacente,
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
si (!Página.IsPostBack)
{
// Esto se debe a que la Tabla[1] contiene Categorías
GridView1.DataSource = GetDataSet().Tables[1
]
;
}
Conjunto de datos privado GetDataSet()
{
consulta de cadena = @"SELECT p.CategoryID,p.ProductID, p.ProductName FROM Productos p
SELECT c.CategoryID,c.CategoryName FROM Categorías c"
; ;contraseña=123456";
SqlConnection myConnection = new SqlConnection(connectionString);
SqlDataAdapter ad = nuevo SqlDataAdapter(consulta, myConnection);
DataSet ds = nuevo DataSet();
ad.Fill(ds);
return ds;
}
En el código anterior, primero devolvemos un conjunto de datos típico y lo vinculamos a la vista de cuadrícula. Tenga en cuenta que hay dos oraciones en la declaración SQL. La primera oración es para devolver el producto y la segunda oración es para devolver todas las categorías. vinculante Cuando usamos gridview, usamos
GridView1.DataSource = GetDataSet().Tables[1];, vincula el registro de categoría en la primera tabla a la vista de cuadrícula. A continuación, tenemos que procesar la lista desplegable en la columna de plantilla. Esto se puede hacer en el evento row_databound. código de la siguiente manera
vacío protegido GridView1_RowDataBound (remitente del objeto, GridViewRowEventArgs e)
{
DataTable myTable = new DataTable();
DataColumn productIDColumn = new DataColumn("ProductID");
DataColumn productNameColumn = new DataColumn("ProductName")
;
myTable.Columns.Add(productIDColumn)
. = nuevo DataSet();
ds = GetDataSet();
int categoríaID = 0;
cadena de expresión = String.Empty
if (e.Row.RowType == DataControlRowType.DataRow)
{
CategoryID = Int32.Parse(e.Row.Cells[0].Text);
expresión = "CategoryID
= " + CategoryID
ddl = (DropDownList)e.Row.FindControl("DropDownList1");
ds.Tables[0].Select(expresión);
foreach (fila DataRow en filas)
{
DataRow newRow = myTable.NewRow();
newRow["ProductID"] = fila["ProductID"];
newRow
["ProductName"] = fila["ProductName"
]
;
Fuente de datos = miTabla;
ddl.DataTextField=
"Nombre del producto";
ddl.DataValueField = "ID del producto
"
;
El principio aquí es aproximadamente el siguiente:
Primero, creamos una tabla de datos, incluidas las columnas productid y productname, luego la vinculamos a la vista de cuadrícula y luego usamos
categoríaID = Int32.Parse(e.Row.Cells[0].Expresión
de texto = "CategoríaID = " + categoríaID;
Construya una expresión de filtro, aquí especificada como ID de categoría, y luego pásela
DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");
DataRow[] filas = ds.Tables[0].Select(expresión);
, busque todos los productos cuya categoría sea igual a un determinado ID de categoría. Aquí, se construye una colección de filas de datos. Finalmente, use un bucle.
, agregue todos los productos de una determinada categoría a la tabla de datos y finalmente vincule la tabla de datos y la lista desplegable para lograr la función.