Avatar billede flashit Nybegynder
24. oktober 2007 - 23:26 Der er 17 kommentarer og
1 løsning

Læs fra asp:BoundField i GridView

Hej E
Jeg har et GridView, med nogle BoundFiled’s

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnRowCommand="GridView1_RowCommand">
    <Columns>
        <asp:BoundField DataField="ChannelID" Visible="False" ShowHeader="False"/>
<asp:ButtonField ButtonType="Image" Text="Button" ImageUrl="~/Create.gif" CommandName="Create"/>
.....

Når jeg så klikker på Create, så fanger jeg eventen på følgende måde:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Create")
        {
            int rowIndex = int.Parse(e.CommandArgument.ToString());
            //Hvad er værdien I ChannelID?????
        }
    }

Men hvordan kan jeg læse værdierne I mine BlundField på den valgte RowIndex?
Avatar billede neoman Novice
24. oktober 2007 - 23:29 #1
der er næppe værdier i rækken før RowDataBound  - er det dét dit spørgsmål går på ? Eller på hvordan du fisker en værdi op fra en bestem celle/field?
Avatar billede flashit Nybegynder
24. oktober 2007 - 23:31 #2
Fisker værdien fra en celle/field
Avatar billede flashit Nybegynder
24. oktober 2007 - 23:32 #3
Der er data i, jeg kan bare ikke finde ud af at trække dem ud igen :-(
Avatar billede neoman Novice
24. oktober 2007 - 23:35 #4
Noget i den dur:
Label (eller TextBox) t= (Label)DetailsView1.Rows[0].Cells[0].Controls[0];
"min tekst" = t.Text;
Avatar billede flashit Nybegynder
24. oktober 2007 - 23:42 #5
Label t = (Label)GridView1.Rows[0].Cells[0].Controls[0];
giver denne fejl:
System.ArgumentOutOfRangeException was unhandled by user code
  Message="Specified argument was out of the range of valid values.\r\nParameter name: index"
Avatar billede neoman Novice
24. oktober 2007 - 23:43 #6
og hvis du har et TemplateField så skal du bruge

kontrollens_type minKontrol = (kontrollens type)GridView1.Rows[rowIndex].FindControl("kontrollensnavn")

og så
minKontrol.Text osv
Avatar billede neoman Novice
24. oktober 2007 - 23:44 #7
.Rows[0].Cells[0].Controls[0]; -> 0 - første row, 0- første kolonne - hvis du har noget andet derinde, f.eks. knapper , så skal du lige rette den til tilf.eks..Rows[0].Cells[1].Controls[0]
Avatar billede neoman Novice
24. oktober 2007 - 23:47 #8
hmm hvis dine kolonner er som vist oprindeligt så burde GridView1.Rows[0].Cells[0].Controls[0]; fungere ellers prøv med TExtBox
Avatar billede neoman Novice
24. oktober 2007 - 23:49 #9
oops - du har sat visible=false på kolonnen, så den findes slet ikke i dit gridview

for at gemme værdien set DataKeyNames="ChannelID" og så kan du hente den dér
Avatar billede flashit Nybegynder
24. oktober 2007 - 23:51 #10
Samme fejl.

Her er koden:

Gui:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnRowCommand="GridView1_RowCommand">
    <Columns>
        <asp:BoundField DataField="ChannelID" Visible="False" ShowHeader="False"/>
        <asp:HyperLinkField DataTextField="Channel" HeaderText="Channel" NavigateUrl="http:\\www.dr.dk" Text="Channel" />
        <asp:BoundField DataField="ChannelDescription" HeaderText="Channel Description" />
        <asp:BoundField DataField="Audions" HeaderText="Audience" />
        <asp:ButtonField ButtonType="Image" Text="Button" ImageUrl="~/Create.gif" CommandName="Create"/>
        <asp:ButtonField ButtonType="Image" Text="Button" ImageUrl="~/Delete.gif" CommandName="Delete"/>
    </Columns>
</asp:GridView>

Code:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Create")
        {
            int rowIndex = int.Parse(e.CommandArgument.ToString());
            TextBox t = (TextBox)GridView1.Rows[0].Cells[0].Controls[0];

        }
    }
Avatar billede neoman Novice
24. oktober 2007 - 23:52 #11
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnRowCommand="GridView1_RowCommand" DataKeyNames="ChannelID" >
Avatar billede flashit Nybegynder
24. oktober 2007 - 23:57 #12
æv, samme fejl
Avatar billede neoman Novice
25. oktober 2007 - 00:01 #13
jo - du skal finde værdien et andet sted:
GridView1.DataKeys(rowIndex).Value.ToString()
Avatar billede flashit Nybegynder
25. oktober 2007 - 00:10 #14
ok, sejt denne virker:
int categoryID = (int)GridView1.DataKeys[rowIndex].Value;

Men den kan vel kun give mig min DataKey, og ikke de ander felter. eller?
Avatar billede flashit Nybegynder
25. oktober 2007 - 00:12 #15
Mange tak for hjælpen c";). Giver du ikke et svar
Avatar billede neoman Novice
25. oktober 2007 - 00:14 #16
den gir dig det som er gemt i DataKeys - de andre felter får du fat i som beskrevet før. Husk at hvis du sætter en kolonne til Visible=False, så "findes" den ikke i regnskabet når man tæller cellepositioner fra venstre af.
Avatar billede neoman Novice
25. oktober 2007 - 00:15 #17
og man kan gemme flere værdier i DataKeyNames (hvis man skal ha flre kolonner sat Visible=False) .. hvordan du får flere værdier ud af DataKeys har jeg ikke helt styr på - slå det op på MSDN
Avatar billede flashit Nybegynder
25. oktober 2007 - 00:16 #18
super, tak
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