DevTrain .NET Developers Home. Das Community Portal für ASP.NET, Visual Basic, C#
 
  Login Status: Hallo   Anmelden  Suche:  
Navigationslinks überspringen
Startseite
Artikel
Blogs
Foren
ClubClub erweitern

 
Ihre Optionen
Save
Mail
Print
Rate
 
Advertising
  VSone vom 24.-25. Februar 2010 im ehem. IMAX München

 
Navigationslinks überspringen
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.         


Diskutieren Sie in den Foren

Business Compact vom 24.-25. Februar 2010 im ehem. IMAX München