DevTrain

Autor: Hannes Preishuber

DropDownlist in einem ASP .Net Datagrid

Ein Datagrid erlaubt das komfortable Anzeigen von Datensätzen als Tabelle. Meist genügen zwei Befehle für das Ergebnis. In ASP. NET gibt es ein solches Datagrid. Die Anwendung wurde hier schon mehrmals diskutiert.
Das Datagrid von ASP.NET ist aber sehr mächtig und kann beinahe beliebig den eigenen Bedürfnissen angepasst werden. So unterstützt es das Feature des editieren von Daten innerhalb des Grids.
Wenn nun aber zum editieren eine "normale" Textbox nicht ideal ist, können Sie über die Templatecolumns alles mögliche in das Grid zaubern.

Eine normale Spalte wird wie folgt definiert. Im folgenden eine ID Spalte die nicht editierbar ist.
<asp:BoundColumn HeaderText="ID" ReadOnly="True" DataField="CompanyName"        ItemStyle-Wrap="false" ItemStyle-VerticalAlign="top" />

Bei einer Templatecolumn müssen sie zwei Design festlegen. Das für das reine anzeigen und das im Edit Mode. Diese Trennung erfolgt über ItemTemplate und Edititemtemplate.
Im Itemtemplate werden in unserem Fall die reinen Daten aus dem Feld ProductCount ausgegeben.

Beim EditItemtemplate können Sie nun mit sämtlichen HTML und ASP.NET Tags drauf loslegen. In diesem Beispiel ist es eine Dropdown Liste und eine Textbox       

<asp:TemplateColumn HeaderText="Products" >
<ItemTemplate>
            <%# DataBinder.Eval(Container.DataItem, "ProductCount") %> Products
</ItemTemplate>

<EditItemTemplate>
            <TABLE Width="100%" CellPadding="0" CellSpacing="0" Border="0">
              <TR>
                <TD Style="font-size:8" Width="20%">
                  <b>CHANGE -</b>
                </TD>
                <TD>
                  <asp:DropDownList
                    Runat="server"
                    Id="edit_Product"
                    DataSource='<%# GetProducts((int)DataBinder.Eval(Container.DataItem, "SupplierID")) %>'
                    DataTextField="ProductName"
                    DataValueField="ProductID"
                    Width="200" />
                </TD>
              </TR>
              <TR>
                <TD Style="font-size:8" Width="20%">
                  <b>TO - </b>
                </TD>
                <TD>
                  <asp:TextBox
                    id="NewProductName"
                    runat="Server"
                    Width="200" />
                </TD>
              </TR>
            </TABLE>

</EditItemTemplate>

</asp:TemplateColumn>

Fällt Ihnen was auf?
Ja richtig. Die Datenbindung bei der Drop Downliste erfolgt über eine Funktion GetProducts.

protected DataTable GetProducts(int SupplierID)
{
    SqlDataAdapter SqlDa = new SqlDataAdapter("SELECT ProductName, ProductID FROM Products WHERE SupplierID = @SupplierID", SqlCon);
    SqlDa.SelectCommand.Parameters.Add(new SqlParameter("@SupplierID", SqlDbType.VarChar, 100));
    SqlDa.SelectCommand.Parameters["@SupplierID"].Value = SupplierID;
    DataSet ds = new DataSet();
    SqlDa.Fill(ds, "ProductList");
    return ds.Tables["ProductList"];
  }

Dieser Artikel bezieht sich auf die BETA2 von .NET.         


Erfasst am: 20.07.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=492
© Copyright 2003 ppedv AG - http://www.ppedv.de