In asp.net 2.0 können Sie eine Dropdown-Liste in einer Rasteransicht verschachteln. Dies ist sehr einfach, und worüber wir hier sprechen, ist:
In jede Dropdownliste sind unterschiedliche Inhalte eingebunden. In der Northwind-Datenbank können Sie beispielsweise GRIDVIEW verwenden, um jede Kategorie anzuzeigen. Gleichzeitig kann die Kategorie in jeder Zeile in Form einer Dropdownliste aufgelistet werden. Alle Produkte werden unten vorgestellt.
Der erste ist der Code im Seitenteil.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="CategoryID" HeaderText="CategoryID" />
<asp:BoundField DataField="CategoryName" HeaderText="Category Name" />
<asp:TemplateField HeaderText="Products">
<ItemTemplate>
< asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Im Codebehind-Abschnitt
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// Dies liegt daran, dass Table[1] Kategorien enthält
GridView1.DataSource = GetDataSet().Tables[1
]
;
}
privates DataSet GetDataSet()
{
string query = @"SELECT p.CategoryID,p.ProductID, p.ProductName FROM Products p
SELECT c.CategoryID,c.CategoryName FROM Kategorien c";
string communicationString = "Server=localhost;Database=Northwind;user id=sa ;password=123456";
SqlConnection myConnection = new SqlConnection(connectionString);
SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
DataSet ds = new DataSet();
ad.Fill(ds);
return ds;
}
Im obigen Code geben wir zunächst einen typischen Datensatz zurück und binden ihn an die Rasteransicht. Der erste Satz dient der Rückgabe des Produkts und der zweite Satz dient der Rückgabe aller Kategorien Bindung Bei der Verwendung von Gridview verwenden wir
GridView1.DataSource = GetDataSet().Tables[1];, binden Sie den Kategoriedatensatz in der ersten Tabellentabelle an die Gridview. Als nächstes müssen wir die Dropdownliste in der Vorlagenspalte verarbeiten. Dies kann im row_databound-Ereignis erfolgen Code wie folgt
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataTable myTable = new DataTable();
DataColumn productIDColumn = new DataColumn("ProductName")
;
myTable.Columns.Add
(
productNameColumn);
= new DataSet();
ds = GetDataSet();
intCategoryID
= 0
;
{
CategoryID = Int32.Parse(e.Row.Cells[0].Text);
expression = "CategoryID = " + CategoryID
= (DropDownList)e.Row.FindControl("DropDownList1")
; ds.Tables[0].Select(expression);
foreach (DataRow-Zeile in Zeilen)
{
DataRow newRow = myTable.NewRow();
newRow["ProductID
"] = row[
"ProductName"
] = row["ProductName"]
;
DataSource = myTable;
ddl.DataTextField
=
"ProductName
"
;
Das Prinzip hier ist ungefähr so:
Zuerst haben wir eine Datentabelle erstellt, einschließlich der Spalten „productid“ und „productname“, diese dann an die Rasteransicht gebunden und dann verwendet
CategoryID = Int32.Parse(e.Row.Cells[0].Text);
Ausdruck = "CategoryID = " + CategoryID;
Erstellen Sie einen Filterausdruck, hier als Kategorie-ID angegeben, und übergeben Sie ihn dann
DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");
DataRow[] rows = ds.Tables[0].Select(expression);
Finden Sie alle Produkte, deren Kategorie einer bestimmten Kategorie-ID entspricht. Hier wird eine Datenzeilensammlung erstellt
Fügen Sie alle Produkte einer bestimmten Kategorie zur Datentabelle hinzu und binden Sie schließlich die Datentabelle und die Dropdown-Liste, um die Funktion zu erreichen.