Avatar billede benchmark Nybegynder
11. november 2006 - 12:02 Der er 3 kommentarer

FindControl i gridview

Hjælp.... :)

Jeg har et gridview hvor i jeg har lavet et TemplateField som indeholder en TextBox og en Knap...

Hvordan tilgår jeg data´ne i TextBoxen ved klik på knappen?

Hvad skal jeg abb på?

Håber på hurtigt svar :)
Avatar billede snepnet Nybegynder
11. november 2006 - 12:34 #1
Kan du ikke vise din markup - og din handler til klikeventet?
Mvh
Avatar billede benchmark Nybegynder
11. november 2006 - 12:47 #2
Da jeg er ny til programering, må du lige specificere hvad der er du gerne vil have!

Er det html koden Gridviewet, eller?

Jeg har endnu ikke noget c# kode da jeg ikke er sikker på hvilken event jeg skal bruge.

Jeg skal hunne skrive et antal i textboxen, og så sende det videre til en funktion.
Avatar billede snepnet Nybegynder
11. november 2006 - 16:00 #3
Ok ... Bare som et eksempel:

Her et grid der benytter bruger en datasource.

Denne datasource peger på en klasse der hedder ProductAccess - der har en metode der kan bruges til at hente alle produkter (GetProducts()).

I grid'et indsættes der et templatefield (der viser en tekstboks) og en knap (commandname sættes til ADD_TO_BASKET).

ProductId forestilles at være nøgle, og sættes som DataKeyName.

Der abbonneres på hændelsen RowCommand.

<form id="form1" runat="server">
    <asp:GridView
        ID="grid"
        DataKeyNames="ProductId"
        AutoGenerateColumns="False"
        runat="server"
        DataSourceID="ProductsDataSource"
        OnRowCommand="grid_RowCommand">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:TextBox ID="txtNumberOfProductsToAdd" runat="server" />
                </ItemTemplate>                 
            </asp:TemplateField>
            <asp:ButtonField ButtonType="Button" CommandName="ADD_PRODUCTS" Text="Tilf&#248;l" />
        </Columns>
    </asp:GridView>
    <asp:ObjectDataSource
        ID="ProductsDataSource"
        runat="server"
        SelectMethod="GetProducts"
        TypeName="ProductAccess">
    </asp:ObjectDataSource>
</form>

I koden:
Hændelsen kan håndteres sådan her:

protected void grid_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "ADD_TO_BASKET")
    {
        // find index på den række der er klikket i
        int rowIndex = int.Parse(e.CommandArgument.ToString());

        // find productid
        int productId = (int)grid.DataKeys[rowIndex]["ProductId"];

        // find det aktuelle row i grid'et
        GridViewRow row = grid.Rows[rowIndex];

        // få fat i tekstboksen
        TextBox txt = row.FindControl("txtNumberOfProductsToAdd") as TextBox;
        // konverter indtastning til et tal
        int numberOfOrderedProducts = int.Parse(txt.Text);

        // hent det product der vises i linien
        Product product = ProductAccess.GetProduct(productId);

        // tilføj til indkøbskurv (produkt og antal)
        Basket.AddProduct(product, numberOfOrderedProducts);
    }
}

Nu kan den kode du har (og det du arbejder med) afvige en del fra eksemplet, men jeg håber du kan se proncipperne i det.

Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester